2016-05-26 7 views
8

JavaScriptコードをモジュールにまとめるためにwebpackを使用していますが、Facebook JS SDKを読み込もうとすると問題が発生しています。 webpackのexternalsオプションを使用しようとしましたが、ライブラリが非同期にロードされているため、私が探している答えが提供されるとは思われません。モジュール(webpack)でFacebook JS SDKを使用

この問題を解決するためにwebpackに問題がありました。しかし、私はそれがもう長く働くとは思わない。 https://github.com/webpack/webpack/issues/367

この問題を解決するにはどうすればよいでしょうか? SDKを同期して読み込むだけですか?

+2

私は良い解決策を見つけることができませんでした。ただ 'window.FB'を参照してください。 – joemaller

答えて

0

webpackは単なるモジュールバンドラであるため、AMDモジュールを使用する場合はRequireJSのようにモジュールローダーを使用するか、単純にこのようなlib script.jsを使用してください。

import $script from "scriptjs"; 

$script("//url/thescript.js",() => { 
    // ... 
}); 

EDIT:その後、

import $script from "scriptjs"; 

export default function importAsync(url) { 
    return new Promise((resolve, reject) => { 
    $script(url, resolve); //just a simple, version. You should treat the reject case 
    }); 
}); 

そして、単に同じようにそれを使用します: 使用することがより単純なものではラッピングあなたがしたい場合は、この方法では、はるかにシンプルになります

//... 
importAsync("//url.to/script.js").then(module => { 
    //... 
}) 

将来的にあなたのモジュールローダーを変更してください:)

+0

この質問は古くなってきていますが、今は 'import()。then()'を使うことができ、 'scriptjs'のようなツールを使わないようにすることができますか? –

+0

または 'fetch()'のようなもの –

+0

残念ながら、webpackは単なるモジュールバンドラであり、非同期リモートモジュールの扱いはわかりません。このために、より整理されたものが必要な場合は、requireJSを使用して、Webpackで最終バンドルをAMDにエクスポートすることができます。 fetchを使用してスクリプト(テキスト)を取得し、手作業でeval()を試した後、モジュールローダーにこれを任せてください: –

関連する問題