如何修复Broccoli Builder在Ember应用程序中使用`UglifyWriter`插件出错

问题描述

我正在为我的前端应用程序使用ember框架,直到上周,当我尝试构建该应用程序时遇到问题,它都可以正常使用

Build failed.
Build Canceled: Broccoli Builder ran into an error with `UglifyWriter` plugin. ?
SyntaxError: Unexpected token: name (v)
Error
    at new JS_Parse_Error (eval at <anonymous> (/Users/vad/dev/book-frontend/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:28:1),<anonymous>:1545:18)
    at js_error (eval at <anonymous> (/Users/vad/dev/book-frontend/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:28:1),<anonymous>:1553:11)
    at croak (eval at <anonymous> (/Users/vad/dev/book-frontend/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:28:1),<anonymous>:2092:9)
    at token_error (eval at <anonymous> (/Users/vad/dev/book-frontend/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:28:1),<anonymous>:2100:9)
    at unexpected (eval at <anonymous> (/Users/vad/dev/content-frontend/node_modules/broccoli-uglify-sourcemap/node_modules/uglify-js/tools/node.js:28:1),<anonymous>:2106:9)

请找到以下package.json供您参考

{
  "name": "book-content","version": "0.0.0","description": "Book management platform","private": true,"directories": {
    "doc": "doc","test": "tests"
  },"scripts": {
    "build": "ember build","start": "ember server","test": "ember test"
  },"repository": "","engines": {
    "node": ">= 0.10.0"
  },"author": "","license": "MIT","devDependencies": {
    "broccoli-asset-rev": "^2.2.0","broccoli-funnel": "^1.0.2","broccoli-merge-trees": "^1.1.1","bson": "^4.0.4","ember-ajax": "0.7.1","ember-aupac-typeahead": "3.1.0","ember-browserify": "^1.2.2","ember-can": "^0.8.1","ember-cli": "2.13.0","ember-cli-app-version": "^1.0.0","ember-cli-autocomplete-input": "1.1.0","ember-cli-babel": "^5.1.5","ember-cli-dependency-checker": "^1.2.0","ember-cli-htmlbars": "^1.0.1","ember-cli-htmlbars-inline-precompile": "^0.3.1","ember-cli-inject-live-reload": "^1.3.1","ember-cli-moment-shim": "^3.7.1","ember-cli-pace": "0.1.0","ember-cli-pagination": "2.2.2","ember-cli-qunit": "^1.2.1","ember-cli-release": "0.2.8","ember-cli-sass": "^7.1.7","ember-cli-sri": "^2.1.0","ember-cli-uglify": "^1.2.0","ember-composable-helpers": "2.1.0","ember-concurrency": "0.8.21","ember-data": "2.7.0","ember-disable-proxy-controllers": "^1.0.1","ember-export-application-global": "^1.0.4","ember-get-helper": "1.1.0","ember-load-initializers": "^0.5.0","ember-lodash": "4.17.1","ember-moment": "^7.8.0","ember-plupload": "1.13.18","ember-power-select-typeahead": "0.7.1","ember-query-params-reset": "2.0.0","ember-resolver": "^2.0.3","ember-rl-month-picker": "^0.2.0","ember-rl-year-picker": "^0.2.0","ember-slide-push-menu": "1.0.0","ember-truth-helpers": "1.2.0","ember-uploader": "1.0.0","ember-validations": "v2.0.0-alpha.5","express": "^4.13.4","glob": "^4.5.3","loader.js": "^4.0.0","morgan": "^1.7.0","uglify-js": "2.7.1"
  },"dependencies": {
    "minimist": "^1.2.0"
  }
}

我看到某些依赖项拉到了最新版本的uglify:3.11.3,这可能会导致问题,但是我不知道如何指示他们使用2.7.0版或未引起问题的版本。我不知道如何覆盖嵌套依赖。

有人可以指导我解决该问题吗?

修复1:

我通过在ember-cli-build.js

中添加以下代码来解决此问题
module.exports = function(defaults) {
  var app = new EmberApp(defaults,{
    // Add options here
    minifyJS: {
      options: {
        exclude: ["**/vendor.js"]
      }
    }
  });

但是我不确定这是否是一个好的解决方案,但是它解决了我的问题。

解决方法

供应商文件夹中的某些代码使用的是最新的ES6语法,而该语法未使用babel进行转译,因此ember-cli-uglify无法识别它。

您已解决的问题是,ember-cli-uglify将不会针对供应商文件夹js文件运行。也就是说,对于这些文件,它不会运行缩小(删除注释并进行代码更改以减小文件大小)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...