由于 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 firebase创建对象状态反应传播运算符