2017-04-20 75 views
2

我試圖用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或者知道我怎麼會去修復它?

回答

0

我回答這個近一年後,所以我無法驗證,如果此修訂將在這些版本中工作,但我遇到了與同一問題做出反應原住民53,玩笑21和打字稿2.7

我的解決辦法有3個部分:

  1. package.json,以下內容添加到您的笑話配置:

```

{ 
    jest: { 
     "moduleFileExtensions": ["ts", "tsx", "js", "json"], 
     "transform": { 
      "^.+\\.js$": "babel-jest", 
      "^.+\\.(ts|tsx)$": "<rootDir>/preprocessor.js" 
     }, 
    } 
} 

```

  • 在根文件夾(見上面的路徑),創建一個preprocessor.js文件具有以下內容(注意,使用現有的tsconfig.json文件的):
  • ```

    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; 
        }, 
    }; 
    

    ```

  • 使用npm install --S react-native-typescript-transformer安裝變壓器庫