我希望这只是我的一个简单的错误,但这是我正在做的。我有一个react native项目,我正在通过url导入另一个react native项目,该项目将成为一个公用库。因为它还处于早期阶段,所以我还没有转换这个项目中的代码。我可以从那里导入组件并运行webapp,但我在测试(jest)方面遇到了问题。我深入研究了一下,发现您应该在jest配置中将未转换的节点模块列入白名单,如下所示:
transformIgnorePatterns: [
"<rootDir>/node_modules/(?!(react-native|my-module))/"
],
但是,这对我在运行测试时遇到的错误没有任何影响:
FAIL src/App.test.js
测试套件运行失败
Jest encountered an unexpected token
This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.
By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
Here's what you can do:
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html
Details:
/path/to/my/workspace/node_modules/my-module/index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { AppRegistry } from "react-native";
^^^^^^
SyntaxError: Unexpected token import
1 | import {combineReducers} from "redux";
2 | import {reducer as formReducer} from "redux-form";
> 3 | import partialForm from "my-module/src/reducers/form";
| ^
4 | import progress from "my-module/src/reducers/progress";
5 | // import theme from "my-module/src/reducers/theme";
6 |
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
at Object.<anonymous> (src/reducers/index.js:3:1)
有人能指出我(可能)的基本错误吗?
发布于 2018-08-17 15:41:07
通过对package.json中的babel配置进行一些修改,解决了这个问题:
"babel": {
"presets": [
- "react-native"
+ "react-native-dotenv"
],
"env": {
- "test-web": {
+ "test:web": {
+ "presets": [
+ "react-native",
+ "es2015"
+ ],
"plugins": [
[
- "react-native-web"
+ "transform-es2015-modules-commonjs",
+ "transform-strict-mode",
+ "syntax-class-properties",
+ "transform-class-properties",
+ "transform-async-to-generator",
+ "transform-flow-strip-types",
+ "transform-react-jsx",
+ "react-native-web/babel"
]
]
},
- "development-web": {
+ "development:web": {
+ "presets": [
+ "react-native",
+ "es2015"
+ ],
"plugins": [
- [
- "react-native-web"
- ]
+ "transform-es2015-modules-commonjs",
+ "transform-strict-mode",
+ "syntax-class-properties",
+ "transform-class-properties",
+ "transform-async-to-generator",
+ "transform-flow-strip-types",
+ "transform-react-jsx",
+ "react-native-web/babel"
]
},
- "production-web": {
+ "production:web": {
+ "presets": [
+ "react-native",
+ "es2015"
+ ],
"plugins": [
- [
- "react-native-web"
- ]
+ "transform-es2015-modules-commonjs",
+ "transform-strict-mode",
+ "syntax-class-properties",
+ "transform-class-properties",
+ "transform-async-to-generator",
+ "transform-flow-strip-types",
+ "transform-react-jsx",
+ "react-native-web/babel"
]
},
- "test": {
- "plugins": []
+ "test:native": {
+ "presets": [
+ "react-native-stage-0"
+ ],
+ "plugins": [
+ "syntax-class-properties"
+ ]
},
- "development": {
- "plugins": []
+ "development:native": {
+ "presets": [
+ "react-native-stage-0"
+ ],
+ "plugins": [
+ "syntax-class-properties"
+ ]
},
- "production": {
- "plugins": []
+ "production:native": {
+ "presets": [
+ "react-native-stage-0"
+ ],
+ "plugins": [
+ "syntax-class-properties"
+ ]
}
}
},
https://stackoverflow.com/questions/51862035
复制相似问题