语法错误:意外令牌)w/Jest&React原生
问题描述:
我试图用jest(v19.0.2)w/my react native(v0.38.0)项目但是当我运行jest命令时我收到以下错误:语法错误:意外令牌)w/Jest&React原生
● Test suite failed to run
/Users/kyledecot/code/root-react-native/node_modules/react-native/jest/setup.js:40
)
^
SyntaxError: Unexpected token)
at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:320:12)
at handle (node_modules/worker-farm/lib/child/index.js:41:8)
at process.<anonymous> (node_modules/worker-farm/lib/child/index.js:47:3)
at emitTwo (events.js:106:13)
下面是它的抱怨有关文件:
30 .mock('ReactNativeDefaultInjection')
31 .mock('Image',() => mockComponent('Image'))
32 .mock('Text',() => mockComponent('Text'))
33 .mock('TextInput',() => mockComponent('TextInput'))
34 .mock('Modal',() => mockComponent('Modal'))
35 .mock('View',() => mockComponent('View'))
36 .mock('ScrollView',() => mockComponent('ScrollView'))
37 .mock(
38 'ActivityIndicator',
39 () => mockComponent('ActivityIndicator'),
40 )
41 .mock('ListView',() => {
42 const RealListView = require.requireActual('ListView');
43 const ListView = mockComponent('ListView');
44 ListView.prototype.render = RealListView.prototype.render;
45 return ListView;
46 })
47 .mock('ListViewDataSource',() => {
48 const DataSource = require.requireActual('ListViewDataSource');
49 DataSource.prototype.toJSON = function() {
50 function ListViewDataSource(dataBlob) {
有其他人遇到了这个bug或者知道我怎么会去修复它?
答
我回答这个近一年后,所以我无法验证,如果此修订将在这些版本中工作,但我遇到了与同一问题做出反应原住民53,玩笑21和打字稿2.7
我的解决办法有3个部分:
- 您
package.json
,以下内容添加到您的笑话配置:
```
{
jest: {
"moduleFileExtensions": ["ts", "tsx", "js", "json"],
"transform": {
"^.+\\.js$": "babel-jest",
"^.+\\.(ts|tsx)$": "<rootDir>/preprocessor.js"
},
}
}
```
- 在根文件夹(见上面的路径),创建一个
preprocessor.js
文件具有以下内容(注意,使用现有的tsconfig.json
文件的): - 使用
npm install --S react-native-typescript-transformer
安装变压器库
```
const tsc = require('react-native-typescript-transformer');
const tsConfig = require('./tsconfig.json');
module.exports = {
process(src, filename) {
if (filename.match(/\.png/)) {
return '';
}
if (filename.endsWith('.ts') || filename.endsWith('.tsx')) {
return tsc.transform(src, filename, tsConfig.compilerOptions);
}
return src;
},
};
```