react-native - 开玩笑无法编译流程(react-native)
问题描述
无法在我的 react-native 项目上运行。
尝试在 react-native 项目上设置 jest 时,出现以下错误:
<project_root>\node_modules\react-native\Libraries\polyfills\error-guard.js:14
type ErrorHandler = (error: mixed, isFatal: boolean) => void;
^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at Runtime._execModule (node_modules/jest-runtime/build/index.js:1157:58)
at Object.<anonymous> (node_modules/react-native/jest/setup.js:16:6)
看来我的笑话运行 react-native's jest/setup.js
。并且由于“类型”(流关键字)而无法编译它的依赖关系。
我将 jest-expo(版本 42.0.1)与 babel-jest 一起使用,并按此处 babel-plugin-transform-flow-strip-types
所述添加。
我尝试了很多解决方案。一种是自己编译这些流文件,并使用 jestmoduleNameMapper
将它们替换为 react-native 的。但这引起了更多问题...
我开玩笑的配置package.json
:
"jest": {
"preset": "jest-expo",
"setupFilesAfterEnv": [
"@testing-library/jest-native/extend-expect"
],
"moduleNameMapper": {
"@react-native-firebase/analytics$": "<rootDir>/__mocks__/@react-native-firebase/analytics.js"
},
"transformIgnorePatterns": [
"rootDir>/node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)",
"<rootDir>/node_modules/(?!expo-image-manipulator|@react-native|@react-native-firebase/analytics|@unimodules/)",
"<rootDir>/node_modules/(?!expo-facebook)"
],
"collectCoverage": false,
"setupFiles": [
"./jestSetup.js"
],
"collectCoverageFrom": [
"**/*.{js,jsx}",
"!**/coverage/**",
"!**/node_modules/**",
"!**/babel.config.js",
"!**/jest.setup.js"
]
}
我的babel.config.js
:
module.exports = function (api) {
api.cache(true);
return {
presets: ["babel-preset-expo"],
plugins: ["@babel/plugin-transform-flow-strip-types"],
};
};
我会非常感谢你的帮助。
解决方案
推荐阅读
- tree - 导出 Cognos 源窗格
- css - 如何创建具有三个相等切片的css饼图?
- algorithm - 字典上最小的字符串旋转
- python-3.x - 使用 isel 时如何在 xarray 中保留维度值?
- jquery - jquery每个项目未定义
- excel - 在 Access ACCDB 文件中,当您使用“使用传统加密”时,加密算法是什么,它的安全性如何?
- ocaml - 使用局部变量声明全局变量
- wordpress - Woocommerce 中的产品附加复选框 Max 2
- java - 函数执行缓慢 - DataOutPutStream
- kotlin - 在 Kotlin 中,如果将一个对象传递给一个类的新实例,然后某些属性发生了变化,那么它会在原始对象中发生变化吗?