【问题标题】:Spread operator in React Native causes 'Unexpected token' error with mochaReact Native 中的扩展运算符导致 mocha 出现“意外令牌”错误
【发布时间】:2016-04-06 05:11:40
【问题描述】:

我正在启动一个 React Native 项目,我想将 ECMAScript 2015 用于我的代码,并将 mocha 用于我的单元测试。我已经安装了babel-registerbabel-preset-es2015babel-preset-stage-2,并将其添加到我项目的package.json 文件中:

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

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

import React from 'react-native';

let {Dimensions} = React;

...我收到有关 React 使用的扩展运算符的错误:

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

SyntaxError: Unexpected token ...

这是一个 babel 错误吗?stage-2 预设不应该添加对扩展运算符的支持吗?还是我错过了什么?

【问题讨论】:

  • 我只是不明白你在这里使用传播运算符。你为什么在这里使用它?
  • 我没有使用扩展运算符。 React Native 正在使用它,我正在我的一个模块中导入 React Native。
  • 如果你查看 react-native (github.com/facebook/react-native/blob/master/package.json) 中的 package.json,你会看到它导入了大约 30 个与 babel 相关的包。如果不添加所有这些,您可能会继续遇到这些缺少包的问题。
  • 这方面有什么进展吗?我使用一个简单的 webpack 脚本来编译和加载一个很小的打字稿文件时遇到了同样的错误。我的 loader 没有调用 babel:{ test: /\.tsx?$/, exclude: /node_modules/, loader: 'ts' }

标签: javascript mocha.js ecmascript-6 react-native babeljs


【解决方案1】:

我也刚开始看到这个。似乎是一个错误。 AFAIK babel 不会编译 node_modules 下的文件,因为它们应该始终被预编译。

这也是最近才添加的

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

【讨论】:

  • 我用一个简单的 webpack 脚本编译和加载一个很小的打字稿文件时遇到了同样的错误。我的 loader 没有调用 babel:{ test: /\.tsx?$/, exclude: /node_modules/, loader: 'ts' } 这行调用的 loader 是 ts-loader
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2019-08-20
  • 2021-10-14
  • 2019-05-29
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多