助けてください!
ブラウザでSystem.jsとbabelを統合するにはどうすればよいですか?
開発モードではブラウザで純粋な es6 ソース コードを使用し、プロダクション モードではファイルをバンドルしたいと考えています。そこで、以下のように system.js と babel を設定します。
npm経由で最新バージョンsystemjs
(0.19.24)とbabel-standalone
(6.6.5)の両方をインストールしました。
私のindex.htmlは以下です
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>System.js demo</title>
</head>
<body>
<script src="./node_modules/systemjs/dist/system.src.js"></script>
<script>
System.config({
baseURL: './',
// or 'traceur' or 'typescript'
transpiler: 'Babel',
// or traceurOptions or typescriptOptions
babelOptions: {
presets: ['es2015']
},
map: {
Babel: './node_modules/babel-standalone/babel.js'
}
});
System.import('boot.js');
</script>
</body>
</html>
私のboot.jsは以下にあります
import { app } from './app.js'
app.run();
そして私のapp.jsは以下です
export app = {
run: function(){
console.log('app')
alert('app')
}
}
ページにアクセスすると、コンソールにエラーが表示されます。
system.src.js:57 Uncaught (in promise) エラー: ReferenceError: [BABEL] http://v:3000/boot.js : 削除された Babel 5 オプションの使用: base.modules - オプションで対応するモジュール変換プラグインを使用し
plugins
ます. http://babeljs.io/docs/plugins/#modules (…)をチェックしてください。
次に、babel のドキュメントを確認し、babelOptions にオプションを 1 つ追加しました。System.js の設定は次のようになりました。
System.config({
baseURL: './',
// or 'traceur' or 'typescript'
transpiler: 'Babel',
// or traceurOptions or typescriptOptions
babelOptions: {
plugins: ["transform-es2015-modules-systemjs"],
presets: ['es2015']
},
map: {
Babel: './node_modules/babel-standalone/babel.js'
}
});
System.import('boot.js');
しかし、同じエラーが発生します。System.jsとbabelをブラウザに統合して、es6ソースコードモジュールをロードする方法がわかりません。
誰でも私を助けることができますか?どうもありがとう!!
編集
system.src.js を確認options.modules = 'system';
し、babelTranspile 関数で削除しました。その後、上記のエラーはなくなりました。しかし、新たなエラーが発生しました。
plugins: ["transform-es2015-modules-systemjs"]
babelOptions に含めなかった場合、js ファイルは次のように変換されます
(function(System, SystemJS) {(function(__moduleName){'use strict';
var _app = require('./app.js');
_app.app.run();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvb3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQUksR0FBSiIsImZpbGUiOiJib290LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBwIH0gZnJvbSAnLi9hcHAuanMnXG5cbmFwcC5ydW4oKTtcbiJdfQ==
})("http://v:3000/boot.js");
})(System, System);
しかし、私はエラーが発生しました
require は関数ではありません。
babelOptionsに含めるplugins: ["transform-es2015-modules-systemjs"]
と、ファイルは変換されず、app.js でエラーが発生します
system.src.js:57 Uncaught (in promise) エラー: SyntaxError: Unexpected token export
これを修正する方法を教えてください。返事を待っています。どうもありがとう