ReactNative在运行的时候遇到Unexpected identifier '_classCallCheck'问题

1,586 阅读1分钟

具体的报错提示 如下:

Unhandled JS Exception: Unexpected identifier '_classCallCheck'. import call expects exactly one argument. no stack

企业微信截图_b9e2ae14-4299-4c6f-b5ac-2be4d99d15f5.png

原因详见下面的链接(纯英文没看太懂,看懂的朋友欢迎留言解答😅)

github.com/babel/babel…

解决方案(翻译自 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 生效 ✅

以上是我项目中的尝试,希望对大家有所参考~