nodejs新版本引起的:digital envelope routines::unsupported

192 阅读1分钟

起因: 使用公司一个老项目,在进行 npm run start 时突然报错

报错原因: 因为 node.js V17版本后,发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。

解决方案

1、推荐: 修改package.json,在相关构建命令之前加入 SET NODE_OPTIONS=--openssl-legacy-provider

"scripts": {
    "start": "SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts start",
    "build": "SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts build",
  },

这种方式,以后直接通过npm执行scripts里的命令即可

2、当次运行的命令窗口有效:在你当前文件的cmd命令窗口输入:SET NODE_OPTIONS=--openssl-legacy-provider, 回车后输入 npm运行命令

微信截图_20231107142920.png

3、只能用最笨的方式...将node.js版本回退到16版本。这样就可以直接运行