问题作为标题,
Vue 版本:2.5.15
网络包版本:3.11.0
当 npm run build:sandbox 时,错误如下:
ERROR in 98.145f98ef3cbd11bd2670.js from UglifyJs
Unexpected token: name (Point) [./node_modules/signature_pad/dist/signature_pad.m.js:6,0][98.145f98ef3cbd11bd2670.js:15,6]
Build failed with errors.
看起来您使用的是旧版本的 UglifyJS,它只处理 ES5 代码。 signature_pad.m.js
使用 ES6+ 特性。 因此,如果您想使用您的 UglifyJS 版本缩小它,您首先需要使用例如 Babel 将其编译为 ES5。 您也可以使用已经编译为 ES5 的signature_pad.umd.js
。
@kevinchung1026昨天我遇到了同样的问题。 我做了一个检查并通过向我的 webpack 添加附加规则来修复它。
{
test: /\.js?$/,
include: [/node_modules\/signature_pad/],
use: [
{
loader: 'babel-loader',
options: {
cacheDirectory: true,
presets: [['env', { 'modules': false, 'targets': { 'node': 4 } }]]
}
}
],
},
希望对你也有帮助😄
现在好了,谢谢
根据https://github.com/rollup/rollup/wiki/pkg.module在package.json文件的module
字段中指定的任何内容都应仅使用 ES2015 模块语法,但其余代码预计遵循包的最低要求版本的 JS 环境的语法。
目前不可能在 webpack 中开箱即用地使用这个模块(因为默认情况下它更喜欢module
到main
)(参见 https://webpack.js.org/configuration/resolve/ #resolve-mainfields) 与其他模块相同。 因此,它需要对构建系统进行一些自定义调整(如上所述)以强制 babel 将此特定模块从node_modules目录转换为项目的目标。
我想将browser
字段添加到 package.json 可能是一个快速的解决方法。
你好!
我正在使用 angular 2 和旧版本的 UglifyJS,并且与 uglifyJS + signature_pad 有相同的错误。
我在上面的答案的帮助下解决了这个问题,添加了新的 webpack 规则
{
test: /\.js?$/,
include: [/node_modules\/signature_pad/],
use: [
{
loader: 'babel-loader'
}
],
}
而且我不得不在 webpack 2 中使用旧的 babel 加载器
包.json:
“开发依赖”:{
....
"babel-core": "^5.4.7",
"babel-loader": "^5.1.3"
}
最有用的评论
@kevinchung1026昨天我遇到了同样的问题。 我做了一个检查并通过向我的 webpack 添加附加规则来修复它。
希望对你也有帮助😄