尝试在生产中编译时出现 Meteor UglifyJS 错误

Meteor UglifyJS error when trying to compile in production

尝试上传到 Galaxy 会导致错误,所以我正在调试以下内容:

meteor --settings settings-dev.json --production

While minifying app code:
  eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:1545:18: SyntaxError: Unexpected token: punc ())
  at new JS_Parse_Error (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:1545:18)
  at js_error (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:1553:11)
  at croak (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:2089:9)
  at token_error (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:2097:9)
  at unexpected (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:2103:9)
  at expr_atom (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:2618:13)
  at maybe_unary (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:2792:19)
  at expr_ops (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:2827:24)
  at maybe_conditional (eval at <anonymous>
  (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1),
  <anonymous>:2832:20)


  * Many more lines of same kind of stuff*


=> Your application has errors. Waiting for file change.

这真的让我不知道是什么导致了这个问题。 GitHub 上有一个 running issue,但目前没有任何进展。

我试图深入挖掘并在我的终端中执行了以下操作

alias uglifyjs=~/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/bin/uglifyjs
find lib client -type f -name \*.js|while read file;do uglifyjs -o /dev/null $file;done

返回

  Parse error at client/main.js:1,7
  SyntaxError: Unexpected token: string (/imports/startup/client)
  Error
   at new JS_Parse_Error (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1545:18)
   at js_error (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1553:11)
   at croak (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2089:9)
   at token_error (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2097:9)
   at unexpected (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2103:9)
   at semicolon (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2123:56)
   at simple_statement (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2314:73)
   at eval (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2183:19)
   at eval (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2136:24)
   at eval (eval at <anonymous> (/Users/sergiy/.meteor/packages/standard-minifier-js/.1.2.1.1ldi2wj++os+web.browser+web.cordova/plugin.minifyStdJS.os/npm/node_modules/meteor/minifier-js/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2904:23)

我的 main.js 文件如下所示:

import '/imports/startup/client';

仍然无法弄清楚问题出在哪里,因为这是 Meteor 在其文档中建议的语法。删除 standard-minifier-js 包可以解决问题,但这不是解决问题的最佳方法,所以我希望有一个修复!

从 2.7.5 开始,UglifyJS 稳定版还没有和谐支持。

https://github.com/mishoo/UglifyJS2 上有一个 harmony 和一个 harmony-v2.7.5 分支。截至目前,对模块的支持尚未完全实现,和谐支持仍处于试验阶段,尽管许多功能已经实现。

事实证明我在我的一个组件中导入的 NPM 包 (ClipboardJS) 存在问题。删除它并将脚本添加到我的 <head></head> 解决了这个问题。我宁愿拥有一个带有外部 src 的缩小应用程序,也不愿拥有一个非缩小应用程序。