次のサンプルコードを考えてみてください(そして、間違っているのかもしれません)。
var FlareCurrency = {
};
export {FlareCurrency};
次のタスクがあります。
gulp.task("compile:add-new-currency-minified", function(){
return gulp.src('src/add-new-currency/**/*.js')
.pipe(babel())
.pipe(concat('Flare-AddNewCurrency.js'))
.pipe(uglify({"preserveComments": "all"}))
.pipe(gulp.dest('dist/minified/'));
});
これを実行すると、次のものが得られます。
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var FlareCurrency={};exports.FlareCurrency=FlareCurrency;
それの楽しみのために、私はコンソールでそれを実行したかった、はい、私はそれが何もしないことを知っていますが、私はこれを見ることを期待していませんでした:
Uncaught ReferenceError: exports is not defined(…)
非縮小バージョン:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var FlareCurrency = {};
exports.FlareCurrency = FlareCurrency;
同じエラーをスローします。 アイデア?
これは実際にはバベルの問題ではありません。ブラウザでCommonJSコード(ES6 export
から変換されたもの)を準備せずに実行しようとしているだけです。 CommonJSはブラウザ上では実行されません。ブラウザ用にパッケージ化するツールを使用する必要があります。たとえば、 Webpack または Browserify です。
偶然にも今週、GithubでGulp + ES6コード(export
を使用)+ Babel + Webpackのセットアップを示す小さなプロジェクトを作成しました: gulp-es6-webpack-example 。
私の例では、ブラウザーにJSコードを同期(プリロード)または非同期(遅延ロード)でロードできます。