You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native项目配置CodePush时遇构建转换器失败错误

解决React Native CodePush命令执行时的"error:0308010C:digital envelope routines::unsupported"错误

这个错误是Node.js 17及以上版本默认启用OpenSSL 3.0加密算法,而Metro缓存模块(stableHash.js)依赖的旧加密算法不兼容导致的,以下是几种解决办法:

临时单次解决

  • Windows 命令提示符:先执行set NODE_OPTIONS=--openssl-legacy-provider,再运行你的CodePush命令(比如code-push release-react MyApp android)
  • Windows PowerShell:先执行$env:NODE_OPTIONS="--openssl-legacy-provider",再运行CodePush命令
  • macOS/Linux:直接在命令前加环境变量,比如NODE_OPTIONS=--openssl-legacy-provider code-push release-react MyApp ios

项目级永久解决

修改项目根目录的package.json,给CodePush相关命令添加环境变量:

  1. 单平台项目直接修改scripts:
    "scripts": {
      "codepush-android": "set NODE_OPTIONS=--openssl-legacy-provider && code-push release-react MyApp android",
      "codepush-ios": "NODE_OPTIONS=--openssl-legacy-provider code-push release-react MyApp ios"
    }
    
    (Windows用&&连接命令,macOS/Linux直接用空格分隔)
  2. 跨平台项目用cross-env统一处理:
    • 先安装依赖:npm install cross-env --save-dev
    • 修改scripts:
      "scripts": {
        "codepush-android": "cross-env NODE_OPTIONS=--openssl-legacy-provider code-push release-react MyApp android",
        "codepush-ios": "cross-env NODE_OPTIONS=--openssl-legacy-provider code-push release-react MyApp ios"
      }
      

降级Node.js版本

如果不想折腾环境变量,可以把Node.js降级到16.x或更低版本(这些版本使用OpenSSL 1.1.1,无兼容性问题):

  • 用nvm管理版本的话,执行nvm install 16安装16版本
  • 切换版本:nvm use 16
  • 可选设置默认版本:nvm alias default 16

内容的提问来源于stack exchange,提问作者Ankit Vora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:55:11