reactjs – SyntaxError:使用Jest导入意外的令牌
我正在尝试使用redux-persist在我的react-native项目中设置一个jest快照测试.我不认为它是es2015导入问题,因为我的测试代码看起来像这样:
import React from "react" import "react-native" // Note: test renderer must be required after react-native. import renderer from "react-test-renderer" import App from "../App" it("renders correctly",() => { const app = renderer.create(<App />).toJSON() expect(app).toMatchSnapshot() }) 在我添加redux-persist之前我运行了完全相同的测试并且它正在运行. jest引发的错误: ●测试套件无法运行 /Users/a_050313/Documents/dev/scheduling/node_modules/redux-persist/es/integration/react.js:9 import React,{ PureComponent } from 'react'; // eslint-disable-line import/no-unresolved ^^^^^^ SyntaxError: Unexpected token import 1 | import React,{ Component } from "react" 2 | import { Provider } from "react-redux" > 3 | import { PersistGate } from "redux-persist/es/integration/react" 4 | 5 | import "./__debug__/ReactotronConfig" // Run Reactron Tools config 6 | at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:318:17) at Object.<anonymous> (App.js:3:13) at Object.<anonymous> (__tests__/App.js:7:10)` 解决方法
这个错误与es2015的进口有关,但它是在jest结束.默认情况下,jest仅转换项目代码和反应本机代码.因此,添加的尚未发布的库将会因为开玩笑而错失.
(如在jest docs中提到的)
在官方文档上提供的Solution似乎有点hacky但这是我发现的唯一的东西: 在package.json jest:{}部分或jest.config.js文件中添加以下内容. "transformIgnorePatterns": [ "node_modules/(?!(react-native|my-project|redux-persist)/)" ] 比特redux-persist是解决问题的方法.如果您对其他库有问题,只需添加其名称即可.我的列表看起来像这样: "jest": { "preset": "react-native","transformIgnorePatterns": [ "node_modules/(?!(react-native|my-project|redux-persist|react-native-linear-gradient|react-native-vector-icons|react-navigation)/)" ] } 如果您从中导入PersistGate,则仅适用于redux-persist 从“redux-persist / lib / integration / react”导入{PersistGate} 代替 从“redux-persist / es / integration / react”导入{PersistGate} (reference) 你会得到编译版本,但对于其他的libs,你仍然可以得到上面提到的解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |