2016-11-10 59 views
6

当我尝试使用笑话测试我的反应本机应用程序时,出现奇怪的导入错误。我有babel-jest,babel-preset-react-native,jest,jest-react-native和react-test-render都安装了,但是当我运行npm测试时得到这个错误信息。意外的导入令牌 - 测试React Native与Jest

●测试套件运行失败

/Users/maftalion/www/stars20/kiosk/node_modules/native-base/index.js:4 
import Drawer from './Components/vendor/react-native-drawer'; 
^^^^^^ 
**SyntaxError: Unexpected token import** 

    at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:316:10) 
    at Object.<anonymous> (src/routes/Identification.js:3:17) 
    at Object.<anonymous> (src/routes/router.js:4:21) 

测试套件:1失败,1过去了,2个总 测试:1后,1总 花絮:1后,1周总 时间:1.011s

回答

5

想通了,基本上抛出了在transformIgnorePatterns中使用es6语法的任何节点模块。

“transformIgnorePatterns”:[ “node_modules /(?反应天然|天然基|反应克隆引用元素)” ],

+2

有关此解决方法的更多上下文:https://github.com/GeekyAnts/NativeBase/issues/396#issuecomment -270116326 – dadads

1

尝试增加transformIgnorePatterns到您的package.json:

{ 
    "name": "MyAwesomeApp", 
    ... 
    "jest": { 
    "transformIgnorePatterns": ["/node_modules/"] 
    } 
} 

对我玩笑开箱的然而:

$ react-native init MyAwesomeApp 
$ cd MyAwesomeApp 
$ npm test 
... 
Tests:  2 passed 

我使用本机作出反应v0.37.0。

+0

是的,当我创建一个新的RN应用程序jest也工作得很好,不知道为什么它给我的问题。 transformIgnorePatterns使我的测试都失败 –

+0

将它设置为“/ node_modules /”将不起作用,因为它指示Jest不能传输所有第三方库。这也是默认的配置值,所以它不会改变任何东西。 请参阅https://facebook.github.io/jest/docs/configuration.html#transformignorepatterns-array-string – dadads

0

我发现前面给出的答案没有解决Unexpected token import错误在测试中本身,如果它们是用ES6编写的(例如ignite new MyProject之后由Ignite CLI创建的样板测试)。

我终于设法通过向test任务package.json删除ES6相关的错误:

"test": "NODE_ENV=test jest --no-cache" 

我使用RN 0.45.1,节点7.10.1(和8.1.2),纱0.24.6和玩笑20.0.4

PS:不要总是在控制台中看到这个,但在VS代码v1.13.1设置--no-cache有所作为。