umi项目启动报错node:internal/crypto/hash:71this[kHandle] = new _Hash(algorithm, xofLen);

错误截图:

umi项目启动报错node:internal/crypto/hash:71this[kHandle] = new _Hash(algorithm, xofLen);_第1张图片

原因:

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

解决方法1(推荐):

修改package.json,在相关构建命令之前加入

SET NODE_OPTIONS=--openssl-legacy-provider 

umi项目启动报错node:internal/crypto/hash:71this[kHandle] = new _Hash(algorithm, xofLen);_第2张图片
这种可以一劳永逸,以后直接通过npm执行scripts里面的命令即可。不管是项目迭代,还是团队开发,这种都比较有效。

解决方法2:

每次启动项目输入启动命令时,先在命令行输入SET NODE_OPTIONS=–openssl-legacy-provider, 回车后输入 再npm启动命令npm start

NODE_OPTIONS=--openssl-legacy-provider
npm start

这种做法,就是每次运行都要输入SET NODE_OPTIONS=–openssl-legacy-provider,来告诉nodejs,别使用最新的SSL3.0,还是使用以前旧版本的。

解决方法3:

就是nodejs版本回退到16版本,这样就可以直接运行了。

你可能感兴趣的:(javascript,npm,umi)