Javascript Babel无法使用spread运算符编译ES6对象克隆

Javascript Babel无法使用spread运算符编译ES6对象克隆,javascript,ecmascript-6,babeljs,Javascript,Ecmascript 6,Babeljs,我使用grunt babel编译ES6代码。但它返回警告:dist/app.js:Unexpected token(321:9)Use--force继续。当我尝试使用{…obj}复制和扩展对象时。下面的代码在ChromeV61的控制台中运行得非常完美,但巴贝尔不喜欢它。有什么问题 let a = { a: 12 }; let b = { ...a, b: 15 }; 我正在使用预设。(babel core v.6.26.0和babel preset env v.1.6.1)对象的扩展属性不是E

我使用grunt babel编译ES6代码。但它返回
警告:dist/app.js:Unexpected token(321:9)Use--force继续。
当我尝试使用
{…obj}
复制和扩展对象时。下面的代码在ChromeV61的控制台中运行得非常完美,但巴贝尔不喜欢它。有什么问题

let a = { a: 12 };
let b = { ...a, b: 15 };

我正在使用预设。(babel core v.6.26.0和babel preset env v.1.6.1)

对象的扩展属性不是ES6的一部分。目前,截至2017年12月,它是ECMAScript第3阶段提案的一部分。你可以

您需要一个巴别塔预设,其中包括尚未正式使用该语言的功能。巴别塔预设环境不包括这些功能

为了解决您的问题,您可以使用类似的方法,并将“stage-3”添加到
.babelrc
中的预设列表中

旁注:

ES6中对象的扩展语法的替代方法是使用


您可能希望将这些插件添加到
.babelrc
。Github的这个问题有很多解决方案。我现在正在试这些

{
  "presets": ["react", "es2015"],
  "plugins": ["transform-es2015-destructuring", "transform-object-rest-spread"]
}
npm安装--保存dev babel-plugin-transform-es2015-destructuring


npm安装——保存开发巴贝尔插件转换对象rest spread

巴贝尔的哪个版本,你使用的是什么巴贝尔预设,你是如何编译的?你留下了很多问题没有回答…是的,同样的问题。我临时使用了
Object.assign({},)
,但想知道一个解决方案。babel-core v.6.26.0和babel preset env v.1.6.1您的意思是不允许进行排列操作?但是我能做得很好。只有两个对象的组合才有问题。@NanduKalidindi,这又取决于您使用的预设。我使用的是env preset(这些示例中的第二个JSON)@micobg当前(2017年12月),扩展运算符不包括在
babel preset env
中。Rest参数、排列参数和Rest/排列元素都是ES6 btw的一部分。只有Rest/排列属性不是@micobg:
preset env
仅包含已正式发布的功能的转换。
{
  "presets": ["react", "es2015"],
  "plugins": ["transform-es2015-destructuring", "transform-object-rest-spread"]
}