【问题标题】:How to fix Broccoli Builder ran into an error with `UglifyWriter` plugin in Ember application如何修复 Broccoli Builder 在 Ember 应用程序中遇到 `UglifyWriter` 插件错误
【发布时间】:2020-10-21 08:23:23
【问题描述】:

我正在为我的前端应用程序使用 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"]
      }
    }
  });

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

【问题讨论】:

    标签: node.js npm ember.js uglifyjs


    【解决方案1】:

    vendor 文件夹中的一些代码使用了最新的 ES6 语法,而这些语法并未使用 babel 进行转译,因此 ember-cli-uglify 无法识别它。

    您所做的修复是,ember-cli-uglify 不会为供应商文件夹 js 文件运行。即,它不会为这些文件运行缩小(删除注释并进行代码更改以减小文件大小)。

    【讨论】:

    • 它会影响什么吗?或者这是一个非常好的修复?
    • 在浏览器中,您将收到与您编写的代码完全一致的代码,并且大小也会稍高。如果这不打扰您,那么您的修复就可以了。他们中的大多数人不会这样做。您可能会找到导致此失败的代码并将其修改为旧语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多