0

System.importtraceur を使用するアプリケーションを Babel に移植しています。私の簡略化された HTML は次のようになります。

<script src="../node_modules/babel-core/browser.js"></script>
<script src="../node_modules/es6-module-loader/dist/es6-module-loader-dev.js"></script>
<script> 
    System.transpiler = 'babel';
    System.import('./css');
</script>

これは私に与えます

Uncaught (in promise) File not found: http://connect:8000/sam/css
    Error loading http://connect:8000/sam/css

代わりに./css.js.js拡張子を指定すると、機能します。ただし、その後css.js、フォームの内部およびシステム全体にインポートします

import 'foo';

不合格。

es6-module-loader が.js拡張機能を必要としているようです。es6-module-loader.jsに、インポートの名前に拡張機能を追加するデモ ページを含むコミットがあることに気付きました。このページには、私も見ます

.js 拡張子もデフォルトで追加されなくなりました。これらの変更は、新しい仕様作業への移行の一部です。詳細については、whatwg/loader#52 の議論を参照してください。.js 拡張子の追加は、必要に応じてカスタム フックを使用して簡単に追加できます。

しかし、どのようなフックが参照されているのか、どのように記述すればよいのかわかりません。

ブラウザーでの動的な読み込みとトランスパイルは理想的ではない可能性があり、堅牢な運用アプローチではないことを認識しています。ただし、この特定のアプリは個々の ES6 ファイルを動的にロードするため、当面はこの方法に固執する必要があります。

私の質問は次のとおりです: es6-module-loader は拡張子を必要としますか、それともデフォルトでファイル.jsを探すように指示する方法はありますか?.js

4

1 に答える 1

0

https://github.com/ModuleLoader/es6-module-loader/blob/master/docs/loader-extensions.mdlocateのドキュメントに基づいて、フックをオーバーライドしました。

var systemLocate = System.locate;                                                                  
System.locate = function(load) {                                                                   
  var System = this; // its good to ensure exact instance-binding                                  
  return Promise.resolve(systemLocate.call(this, load)).then(function(address) {                   
    return address + '.js';                                                                        
  });                                                                                              
}                                                                                                  
于 2015-08-02T18:42:46.170 に答える