由于 javascript 传播运算符,Webpack 未构建

Posted

技术标签:

【中文标题】由于 javascript 传播运算符,Webpack 未构建【英文标题】:Webpack is not building because of javascript spread operator 【发布时间】:2018-08-31 14:30:18 【问题描述】:

Spread 运算符出现意外令牌错误,如何在不删除代码的情况下构建捆绑包?

这是我的 webpack 配置文件

 Unexpected token (85:32)

  83 |   console.log(
  84 |     'return value 1 ' +
> 85 |       JSON.stringify( value:  ...this.value(), ...newState  )
     |                                 ^
  86 |   )
  87 |   return 
  88 |     value: 

var path = require('path')

module.exports = 
  entry: path.resolve(__dirname, 'partner/index.js'),
  output: 
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  ,
  module: 
    rules: [
      
        test: /\.js$/, // Check for all js files
        loader: 'babel-loader',
        query: 
          presets: ['babel-preset-es2015'].map(require.resolve)
        ,
        exclude: /node_modules\/(?!other-module)/
      
    ]
  ,
  stats: 
    colors: true
  ,
  devtool: 'source-map',
  resolve:  symlinks: false 

但是这个 webpack 可以工作,但我需要使用以前的一个

module.exports = 
  entry: 
    partner: '../workout-example/partner/index.js',
    test: '../workout-example/test/example.spec.js'
  ,
  target: 'web',
  mode: 'development',
  node: 
    fs: 'empty'
  ,
  output: 
    filename: '[name]_bundle.js'
  

【问题讨论】:

【参考方案1】:

Object Rest/Spread Properties 还不是 ECMAScript 功能(但很快就会出现)。

使用需要添加对应的Babel plugin。

【讨论】:

我认为这应该是公认的答案,因为我的答案确实需要您更改任何代码【参考方案2】:

您应该将扩展运算符更改为 Object.assign()

来自 mozilla 的示例

const object1 = 
  a: 1,
  b: 2,
  c: 3
;

const object2 = Object.assign(, object1);

console.log(object2.c);
// expected output: 3

你的JS版本可能不支持最新的es6语法

代码示例

JSON.stringify( value:  Object.assign(, this.value(), newState)  )

【讨论】:

不支持是什么意思?实际上它适用于另一个配置(我在原始问题中添加) 看看@str的答案 我将预设更改为 babel-preset-es2017 但收到错误提示找不到模块 babel-preset-es2017 在你发送的链接中,它说 babel-preset-es2017 已弃用,所以我看到 babel 建议使用 env 而不是年度解决方案。当我在 webpack 配置中使用预设:['@babel/preset-env'] 而不是 babel-preset-es2015 我得到 -> 找不到模块'@babel/preset-env' 你跑了吗:npm install babel-preset-env --save

以上是关于由于 javascript 传播运算符,Webpack 未构建的主要内容,如果未能解决你的问题,请参考以下文章

javascript 迭代元素DOM传播运算符

javascript ES6 - `...`传播运算符

javascript firebase创建对象状态反应传播运算符

javascript ES6 - 在函数中传播运算符

python中有没有办法解压缩类似于javascript中的传播运算符的列表? [复制]

JS传播和休息运算符的运算符优先级?