1.报错

楼主iOS,项目里集成了RN,升级了node版本之后,RN项目报错 error:0308010C:digital envelope routines::unsupported

2.报错原因

出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制。

3.解决方案

3.1版本降级,解决报错

卸载node.js17以上版本,安装node.js16版本,问题解决。(nvm很方便)

3.2修改配置文件

找到项目的package.json文件,把自己对应的命令,加上&&,写到启动项目的配置里面

  "scripts": {
    "start": "yarn react-native start",
    "serve": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve",
    "build": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build",
    "build:report": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build --report"
  },

还可以在.zshrc里加这一句,source ~/.zshrc 一下

export NODE_OPTIONS=--openssl-legacy-provider

保存退出之后运行RN项目 npm start,搞定!

4.注意

1.node安装路径,(我有一个朋友)之前使用Homebrew安装了某个版本的node,后来又听前端同事说nvm方便管理node版本,于是安装了nvm,使用nvm又安装了一个版本的node,导致进了个坑。卸载brew安装的node,清除缓存之后,美滋滋~

2.使用nvm作为node版本管理工具时,报错 React Native ios build : Can’t find node

error: Can’t find ‘node’ binary to build React Native bundle If you have non-standard nodejs installation, select your project in Xcode, find ‘Build Phases’ - ‘Bundle React Native code and images’ and change NODE_BINARY to absolute path to your node executable (you can find it by invoking ‘which node’ in the terminal)

这是Xcode找不到node,可以使用软连接的方式,将node链接到/user/local/bin/node目录上,Xcode即可找到node

ln -s $(which node) /usr/local/bin/node

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐