エラーが出ます、
「予期しないトークン:名前(bazz)」
私のうなり声タスクがuglifyを実行しているとき。その行で気付いた唯一のことは、「var」の代わりに「let」キーワードを使用していることでした。そのため、そのエラーがスローされる理由がわかりませんでした。
それぞれにlet varNameを含むif elseステートメントがあります。
function foo (bar) {
if (condition) {
let bazz = fn();
//doSomething with bazz
_.assign(bar, bazz);
} else {
let bazz = fn2();
//doSomething different with bazz
_.assign(bar, bazz);
}
}
var bazz = {};
if else句の前にありますが、fn()およびfn2()に関係なくbazzを割り当てる必要があるため、それを避けたかったのです。
他の誰かがこれに遭遇したかどうか、そして彼らがそれを修正するために何をしたか知りたいと思っていました。前もって感謝します!
このトピックをもう少し調べたところ、grunt-contrib-uglifyおよびgulp-uglifyにはUglifyJSが依存関係にあり、ES6 "Harmony"はまだサポートされていないことがわかりました。更新については https://github.com/mishoo/UglifyJS2/issues/448 をフォローしてください。
grunt-babel などのツールを使用して、ES6コードをES5にコンパイルすることもできます。
私は公式の gulp-uglify npmページで以下に遭遇しました。
推奨事項に注意してください:
Nodeストリームでエラー状態を適切に処理するために、このプロジェクトでは pump の使用をお勧めします。詳細については、 Why Use Pump? を参照してください。 。
上記のページの例の私の実装は:
gulpfile.js
var gulp = require('gulp');
var pump = require('pump');
// the npm page states:
// can be a git checkout or another module
// (such as `uglify-js-harmony` for ES6 support)
var uglifyjs = require('uglify-js-harmony');
var minifier = require('gulp-uglify/minifier');
var concat = require('gulp-concat');
gulp.task('compress', function (cb) {
// the 'options' argument is included in the example,
// but i don't know what it does or how it can be removed
var options = {
preserveComments: 'license'
};
pump([
gulp.src('my_scripts/*.js'), // gets all js scripts in this folder
minifier(options, uglifyjs),
concat('my_bundled_script.js'), // concatenates all scripts into this file
gulp.dest('dist') // puts the file into this folder
],cb
);
});
package.json
{
"devDependencies": {
"gulp": "latest",
"pump": "latest",
"gulp-concat": "latest",
"gulp-uglify": "latest",
"uglify-js-harmony": "latest"
},
"dependencies": {}
}
結果
uglify-js-harmony
を使用しない場合:
pump
は、エラーがどこから発生したかを特定するのに役立ちました(gulp-uglify
を使用する場合)let
ステートメントが含まれているファイルでエラーが発生したuglify-js-harmony
を使用すると、エラーは発生しませんでした。
その他の考慮事項:
上記のページには現在次の情報が表示されています。
// can be a git checkout or another module
// (such as `uglify-js-harmony` for ES6 support)
var uglifyjs = require('uglify-js');
しかし、uglify-js-harmony
をインストールすると、次の警告メッセージが表示されました。
npm WARNは非推奨[email protected]:uglify-esを支持して非推奨
uglify-es
の代わりにuglify-js-harmony
を使用しようとすると、ここに記載されているようなエラーメッセージが表示されました。
https://github.com/terinjokes/gulp-uglify/issues/287
私はそこから問題のスレッドを追跡しようとしましたが、道に迷ってしまい、uglify-es
の実装方法の明確な解決策が見つかりませんでした。