具体的报错提示 如下:
Unhandled JS Exception: Unexpected identifier '_classCallCheck'. import call expects exactly one argument. no stack
原因详见下面的链接(纯英文没看太懂,看懂的朋友欢迎留言解答😅)
解决方案(翻译自 github.com/babel/babel… @kerm1it)
-
1、更新metro-react-native-babel-preset 版本 从0.58.0到0.59.0。
-
2、如果没有生效,请尝试 yarn start --reset-cache 重新启动应用程序。
-
3、用yarn去锁死 @babel/traverse 版本 为 7.16.7,然后重新安装依赖,最后执行 yarn start --reset-cache 重启。
-
4、更新babel.config.js 确保你的metro-react-native-babel-preset是 0.58.0。
from:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
};
to:
module.exports = {
presets: [['module:metro-react-native-babel-preset', {
unstable_disableES6Transforms: true
}]],
};
我的项目配置
因为项目中用到的babel的版本不同,所以上述四条不见的都可以解决此问题。建议都尝试一下!
我的项目中用到的babel相关的版本如下:
"@babel/core": "^7.6.4",
"@babel/runtime": "^7.6.3",
"metro-react-native-babel-preset": "^0.56.0",
方案一:升级 metro-react-native-babel-preset 版本 为0.59.0,生效了,直接 yarn start 没有用yarn start --reset-cache重启 ✅
方案二:锁死 @babel/traverse 版本 为 7.16.7 yarn start --reset-cache 重启 失败 ❌
方案三:"metro-react-native-babel-preset": "^0.56.0", 情况下 修改abel.config.js 生效 ✅
以上是我项目中的尝试,希望对大家有所参考~