Node.js报digital envelope routines::unsupported错误,如何仅用npm start启动项目?
解决React项目启动时的ERR_OSSL_EVP_UNSUPPORTED错误
这个错误是因为Node.js 17及以上版本默认启用了新的OpenSSL加密算法,但你的项目里webpack、babel-loader这类依赖版本偏旧,不支持该算法导致的。既然手动设置NODE_OPTIONS=--openssl-legacy-provider能正常启动,下面是不用每次手动输入前置命令的解决方案:
方案1:直接修改package.json的启动脚本(分系统)
打开项目根目录的package.json,找到scripts里的start命令,根据你的操作系统修改:
- Linux/macOS:
将原来的启动命令改成:"scripts": { "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start" } - Windows(CMD命令行):
改成:"scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start" }
方案2:跨平台通用方案
如果需要在不同系统都能正常运行,可以用cross-env统一环境变量设置:
- 先安装依赖:
npm install cross-env --save-dev - 修改package.json的start脚本:
"scripts": { "start": "cross-env NODE_OPTIONS=--openssl-legacy-provider react-scripts start" }
方案3:升级项目依赖(彻底解决)
如果不想依赖环境变量,可以尝试升级项目里的相关依赖到支持新OpenSSL算法的版本:
- 升级react-scripts(如果是create-react-app创建的项目):
npm install react-scripts@latest - 或者单独升级webpack、babel-loader:
npm install webpack@latest babel-loader@latest --save-dev
注意:升级依赖可能会引发其他兼容性问题,建议先备份项目或在测试分支操作,升级后全面测试功能。
内容的提问来源于stack exchange,提问作者Hayaz
相关产品推荐
相关产品推荐

