2016-01-01 27 views
9

我开始了一个React Native项目,并且我想为我的代码使用ECMAScript 2015,为我的单元测试使用mocha。我已经安装了babel-registerbabel-preset-es2015babel-preset-stage-2,并添加这到我的项目的package.json文件:React Native中的传播运算符会导致'意外的令牌'与摩卡的错误

"babel": { 
    "presets": ["es2015", "stage-2"] 
} 

但是当我运行mocha --compilers js:babel-register并尝试测试导入一个阵营的Native API模块...

import React from 'react-native'; 

let {Dimensions} = React; 

...我得到有关使用的扩频操作错误阵营:

node_modules/react-native/Libraries/react-native/react-native.js:107 
...require('React'), 
^^^ 

SyntaxError: Unexpected token ... 

这是一个通天塔错误 - 第2阶段预设不应该添加对扩展运算符的支持吗?还是我错过了别的?

+0

我只是不明白,你的传播运营商的应用在这里。你为什么在这里使用它? – void

+2

我没有使用传播运算符。 React Native正在使用它,并且我在其中一个模块中导入了React Native。 –

+0

如果您在react-native(https://github.com/facebook/react-native/blob/master/package.json)中查看package.json,您会看到它导入了大约30个与babel相关的软件包。如果不添加所有这些,您可能会继续体验这些缺少包的hickup。 –

回答

2

我刚开始看到这一点。看起来像一个错误。 AFAIK babel不会编译node_modules下的文件,因为它们应该始终进行预编译。

而且这是一个相当最近除了

https://github.com/facebook/react-native/commit/f9b744d50137de25357994fe2e829f98104e2242

+0

我得到了一个简单的webpack脚本编译和加载一个小打字稿文件。我的加载器不调用babel:'{test:/\.tsx?$/,exclude:/ node_modules /,loader:'ts'}'该行调用的加载器是'ts-loader' – timecc