Ember.js 如何使用Ember CLI跟踪丑陋的错误

Ember.js 如何使用Ember CLI跟踪丑陋的错误,ember.js,ember-cli,uglifyjs,Ember.js,Ember Cli,Uglifyjs,当我在开发中构建Ember CLI应用程序时,它运行良好。当我试着为生产而建造它时,丑八怪很不高兴: $ ember build --environment=production version: 1.13.15 Build failed. File: assets/vendor.js (70503:3) Unexpected token name «use», expected punc «,» Error at new JS_Parse_Error (eval at <anon

当我在开发中构建Ember CLI应用程序时,它运行良好。当我试着为生产而建造它时,丑八怪很不高兴:

$ ember build --environment=production
version: 1.13.15
Build failed.
File: assets/vendor.js (70503:3)
Unexpected token name «use», expected punc «,»
Error
    at new JS_Parse_Error (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:1508:18)
    at js_error (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:1516:11)
    at croak (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2008:9)
    at token_error (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2016:9)
    at expect_token (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2029:9)
    at expect (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2032:36)
    at expr_list (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2535:44)
    at subscripts (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2674:30)
    at subscripts (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2651:20)
    at expr_atom (eval at <anonymous> (/Users/michael/Code/queue/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4), <anonymous>:2527:20)
$ember build--environment=production
版本:1.13.15
生成失败。
文件:assets/vendor.js(70503:3)
意外的令牌名称«使用»,预期为punc«,»
错误
在新的JS_Parse_错误处(eval at(/Users/michael/Code/queue/node_modules/brocoli uglify sourcemap/node_modules/uglify JS/tools/node.JS:24:4),:1508:18)
at js_错误(eval at(/Users/michael/Code/queue/node_modules/brocoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4),:1516:11)
在croak(eval at(/Users/michael/Code/queue/node_modules/brocoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4),:2008:9)
at令牌错误(eval at(/Users/michael/Code/queue/node_modules/brocoli uglify sourcemap/node_modules/uglify js/tools/node.js:24:4),:2016:9)
at expect_令牌(eval at(/Users/michael/Code/queue/node_modules/brocoli uglify sourcemap/node_modules/uglify js/tools/node.js:24:4),:2029:9)
在expect(eval at(/Users/michael/Code/queue/node_modules/brocoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:24:4),:2032:36)
at expr_列表(eval at(/Users/michael/Code/queue/node_modules/brocoli uglify sourcemap/node_modules/uglify js/tools/node.js:24:4),:2535:44)
at下标(eval at(/Users/michael/Code/queue/node_modules/brocoli uglify sourcemap/node_modules/uglify js/tools/node.js:24:4),:2674:30)
at下标(eval at(/Users/michael/Code/queue/node_modules/brocoli uglify sourcemap/node_modules/uglify js/tools/node.js:24:4),:2651:20)
在expr_atom(eval at(/Users/michael/Code/queue/node_modules/brocoli uglify sourcemap/node_modules/uglify js/tools/node.js:24:4),:2527:20)
我不知道这个错误意味着什么-
意外的令牌名称«使用»,预期的punc«,»
-并且
资产/vendor.js(70503:3)
不是我在任何地方都能找到的文件


如果有人能给我一个如何追踪这个错误的建议,我将非常感激

运行
ember init
并替换
bower.json
package.json
使错误消失。

我对这个主题做了一些研究,因为我也经历了“类似的事情”

在我的ember项目中,我使用
ember-browserify
将NPM脚本复制到
vendor.js

事实证明,
ember-browserify
在执行此复制时不转换ES5/ES6脚本,
uglify-js
(插件崩溃)不支持ES语法

你可以看到这个问题:和

下面是我如何解决这个问题的(非常简单)

在终端上:
npm安装——保存开发成员浏览babelify babel-preset-es2015

environment.js

browserify:{
扩展:['.js'],
转换:[
['babelify',{预设:[“es2015”]}]
]
},
现在,当您运行
ember build--environment=production
时,它不会抛出语法错误


顺便说一句,我关注这个奇怪问题的一个有用方法是在命令行上全局安装uglifyjs并手动运行它,直到找到一个合理的行号来发现问题(let vs var)


请记住,ember build将只在实际安装在node_模块中的东西上运行。调试此问题时,有一个问题是,在进行一些尝试/错误测试时,安装了不同的版本