首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象rest扩展,不能使用babel寄存器。

对象rest扩展,不能使用babel寄存器。
EN

Stack Overflow用户
提问于 2016-01-05 13:22:41
回答 1查看 2.2K关注 0票数 2
代码语言:javascript
复制
// runMain.js
'use strict';
require('babel-register');
require('./run.js');

// run.js
let o = {id: 1};
let o2 = {...o};
console.log(o === o2);

我做过这样的事:npm install babel-preset-es2015 npm install babel-plugin-transform-object-rest-spread

vi ~/.babelrc

代码语言:javascript
复制
{
  "presets": ["es2015"], 
  "plugins": ["transform-object-rest-spread","syntax-object-rest-spread"]
}

但仍然不能工作时,node runMain.js

代码语言:javascript
复制
C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\lib\transformation\file\index.js:548
      throw err;
      ^

SyntaxError: C:/workspace/git/LEGO/activity-lego/units/2015weather/run.js: Unexpected token (18:10)
[0m  16 | [90m// run.js[39m
  17 | let o [1m=[22m [32m{[39mid[1m:[22m [35m1[39m[32m}[39m[1m;[22m
> 18 | let o2 [1m=[22m [32m{[39m[1m...[22mo[32m}[39m[1m;[22m
     |           ^
  19 | console[1m.[22mlog[94m[1m([22m[39mo [1m===[22m o2[94m[1m)[22m[39m[1m;[22m[0m
    at Parser.pp.raise (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\parser\locati
on.js:22:13)
    at Parser.pp.unexpected (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\parser\u
til.js:91:8)
    at Parser.pp.parseIdentifier (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\par
ser\expression.js:1009:10)
    at Parser.pp.parsePropertyName (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\p
arser\expression.js:831:135)
    at Parser.pp.parseObj (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\parser\exp
ression.js:747:12)
    at Parser.pp.parseExprAtom (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\parse
r\expression.js:479:19)
    at Parser.pp.parseExprSubscripts (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib
\parser\expression.js:265:19)
    at Parser.pp.parseMaybeUnary (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\par
ser\expression.js:245:19)
    at Parser.pp.parseExprOps (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\lib\parser
\expression.js:176:19)
    at Parser.pp.parseMaybeConditional (C:\workspace\git\LEGO\activity-lego\node_modules\babel-register\node_modules\babel-core\node_modules\babylon\l

bebel版本6.2.0 (babel-core 6.2.1)节点版本4.0.0 (64位)操作系统版本: window 7

EN

回答 1

Stack Overflow用户

发布于 2017-04-17 12:01:38

由于这个问题还没有得到回答,但在谷歌和我刚刚在我的react应用程序中解决了同样的问题,没有babel注册(!),我在这里发布了我的答案,因为这对其他人来说也许是有用的。

解决方案1

是基于https://github.com/babel/babel-loader/issues/170

第一次安装:

代码语言:javascript
复制
npm install --save-dev babel-plugin-transform-es2015-destructuring
npm install --save-dev babel-plugin-transform-object-rest-spread

第二次编辑.babelrc:

代码语言:javascript
复制
{
  "presets": ["react", "es2015"],
  "plugins": ["transform-es2015-destructuring", "transform-object-rest-spread"]
}

解决方案2

是基于http://stefan.magnuson.co/articles/frontend/using-es7-spread-operator-with-webpack/

第一次安装:

代码语言:javascript
复制
npm install --save babel-preset-stage-2

第二次编辑.babelrc:

代码语言:javascript
复制
{
  "presets" : ["es2015", "react", "stage-2"]
}

在提供的链接中,预置设置在webpack.config.js中,我不确定设置此设置的推荐方法是什么。

结论

两种方式都让我用..。扩展对象语法和错误“意外令牌”消失。

我还不确定推荐的方法是哪一种,但我现在更喜欢第二种,因为它更容易处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34612771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档