Ale*_*der 55 javascript gulp gulp-uglify
我试图使用gulp来缩小包含JS文件的文件夹.但是,其中一个文件存在上述错误,导致其无法缩小.
我设法抓住并打印了错误,我在这里部分打印过:
JS_Parse_Error {
message: 'SyntaxError: Unexpected token: punc ())',
filename: 'ex.js',
line: 189,
col: 25,
pos: 6482,
stack: Error\n at new JS_Parse_Error (eval at <anonymous> ... )
plugin: 'gulp-uglify',
fileName: '.../js/ex.js',
showStack: false
}
Run Code Online (Sandbox Code Playgroud)
有问题的文件包含以下内容,缩写为:
function() {
...
$.confirm({
buttons: {
confirm: function() {
$.post('/ajax-handler', {
...
})
.done( function(response) {
var data = filterResponse(response);
if (data['status'] == 'success') {
sleep(1000).then(() => {
* ...
});
sleep(5000).then(() => {
...
});
} else {
console.log('Oops!');
}
})
.fail( function(err, status, response) {
...
});
},
cancel: function() {}
}
});
...
}
Run Code Online (Sandbox Code Playgroud)
我在上面添加了"*"以指示JS_Parse_Error列出的确切位置.
Qwe*_*rty 55
v2.0.0(2018-09-14) - 突然变化(链接)
切换回uglify-js(uglify-es被放弃,如果你需要uglify ES6代码,请使用terser-webpack-plugin).
我希望你能从这个与webpack一起使用的解决方案中获得灵感.(下方链接)
有两个版本的UglifyJS - ES5和ES6(Harmony),参见git
ES5版本默认包含所有插件,但如果你明确安装了Harmony版本,那些插件将使用它.
的package.json
"uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony"
Run Code Online (Sandbox Code Playgroud)
要么
npm install --save uglify-js@github:mishoo/UglifyJS2#harmony
yarn add git://github.com/mishoo/UglifyJS2#harmony --dev
Run Code Online (Sandbox Code Playgroud)
要与webpack一起使用,也要安装webpack插件
npm install uglifyjs-webpack-plugin --save-dev
yarn add uglifyjs-webpack-plugin --dev
Run Code Online (Sandbox Code Playgroud)
然后导入手动安装的插件
var UglifyJSPlugin = require('uglifyjs-webpack-plugin');
Run Code Online (Sandbox Code Playgroud)
并在代码中替换它
- new webpack.optimize.UglifyJsPlugin({ ... })
+ new UglifyJSPlugin({ ... })
Run Code Online (Sandbox Code Playgroud)
有关更多webpack信息(安装/使用),请参阅https://github.com/webpack-contrib/uglifyjs-webpack-plugin#install
WOW*_*WOW 17
npm install uglifyjs-webpack-plugin --save-dev
是不足够的
主要的问题是"uglifyjs-webpack-plugin": "^0.4.6"
在的WebPack的的package.json
据semver,^0.4.6 := >=0.4.6 <0.5.0
.由于领先零,webpack
永远不会使用1.0.0-beta.2
.
所以在运行之后npm i -D uglifyjs-webpack-plugin@beta
,你需要再做一步rm -rf node_modules/webpack/node_modules/uglifyjs-webpack-plugin
.然后webpack将从而node_modules/uglifyjs-webpack-plugin
取代该版本node_modules/webpack/node_modules/uglifyjs-webpack-plugin
2018-04-18更新:webpack v4没有此问题
添加babel-preset-es2015
依赖项以解决此问题.
还可以添加'es2015'
在.babelrc
文件中.
json
{
"presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 Grunt (grunt-contrib-uglify) 遇到此错误,解决方案是安装 ES6 版本的插件:
npm install grunt-contrib-uglify-es --save-dev
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,我在这里找到了一个不错的答案, 可以帮助我找到导致错误的文件。
转到Rails Console并粘贴:
JS_PATH = "app/assets/javascripts/**/*.js";
Dir[JS_PATH].each do |file_name|
puts "\n#{file_name}"
puts Uglifier.compile(File.read(file_name))
end
Run Code Online (Sandbox Code Playgroud)
希望它能对某人有所帮助!