在webpack.config.js中使用传播运算符的SyntaxError

时间:2018-12-10 12:51:44

标签: javascript node.js webpack ecmascript-6

在我的webpack.config.js中,我正在从其他文件中导入几个JS对象进行配置。 这些对象是使用传播算子组成的。 例如在build.js中

const otherObj = { a:[], b: [] }
const conf = {
  prop1: [],
  ...otherObj
}

然后我想以这种方式在webpack.config.js中使用这些对象:

const { prop1, a, b } = require('./build.js');
module.exports = {
    entry: { prop1, a, b },
    rules: [
      {
        test: jsRegex,
        exclude: /node_modules/,
        use: ["babel-loader"]
      },
    ]
}

启动构建脚本时,出现SyntaxError:

    ...otherObj,
^^^
SyntaxError: Unexpected token ...

注意:.babelrc

    {
    "presets": [
        "@babel/preset-env"
    ],
    "plugins": [
        "@babel/syntax-object-rest-spread"
    ] 
}

2 个答案:

答案 0 :(得分:1)

这取决于您使用的node的版本。例如,使用节点v6.15.1(Boron)将返回与您相同的错误,但是在v8.14.0(Carbon)上运行时,它可以正常编译。

使用节点

检查所使用的节点版本是否支持所需的功能。

您正在使用object spread properties的功能已添加到v8.6.0(正在运行的没有标志的节点)上。

使用通天塔

您可以transpile your webpack config,通过这种方式,您可以使用当前节点版本并使用您可能喜欢的所有ES6功能。

答案 1 :(得分:0)

您应该在下面添加.babelrc文件。

然后安装:npm i babel-plugin-transform-object-rest-spread

{
    "presets": ["env", "react"],
    "plugins": ["transform-object-rest-spread"]

}

这对我有用,请尝试!