【问题标题】:Laravel Mix breaks package with `npm run dev`Laravel Mix 使用 `npm run dev` 打破包
【发布时间】:2017-09-22 12:01:36
【问题描述】:

我有一个用 ES6 功能编写的 nodejs 包,如“let”、扩展运算符 (...) 和函数参数的默认值。

问题是当我运行 Laravel Mix 的 npm run production 时,出现错误,如下所示:

 ERROR  Failed to compile with 1 errors                                 
 error
/js/app.js from UglifyJs
Unexpected token: name (DateTime) [./~/vdatetime/src/datetime.js:3,0]
[/js/app.js:40347,4]

npm ERR! Linux 4.4.0-72-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "production"
npm ERR! node v7.4.0
npm ERR! npm  v4.1.2
npm ERR! code ELIFECYCLE
npm ERR! @ production: `cross-env NODE_ENV=production 
node_modules/webpack/bin/webpack.js --progress --hide-modules --
config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 2

(似乎是第 3 行中的 let 运算符)

但是当我尝试npm run dev 时,一切都按预期进行。 知道为什么它无法转换代码吗?

【问题讨论】:

  • 向我们展示let name 然后
  • 扩展运算符不需要 Babel 阶段 2 预设吗?

标签: javascript node.js laravel ecmascript-6 laravel-mix


【解决方案1】:

Uglify 无法解析 ES6,它会抛出语法错误。先转换成 ES5,用 babel 对生成的 JS 进行后处理,或者使用不同的 minifier。

【讨论】:

  • 我将 babel 添加到在 beforepublishOnly 脚本(当您键入 npm publish 时运行)上执行的包中,以便在 Uglify 缩小它时将发布的脚本转译为 ES5跨度>
猜你喜欢
  • 1970-01-01
  • 2021-07-22
  • 2021-10-01
  • 1970-01-01
  • 2021-03-25
  • 2019-02-10
  • 2022-08-02
  • 1970-01-01
  • 2021-04-25
相关资源
最近更新 更多