umi项目启动报错node:internal/crypto/hash:71this[kHandle] = new _Hash(algorithm, xofLen);
错误截图:
原因:
这是node.js 的版本问题,因为 node.js V17开始版本中发布的是OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在使用 nodejs V17以上版本后会报错。
解决方法1(推荐):
修改package.json,在相关构建命令之前加入
SET NODE_OPTIONS=--openssl-legacy-provider
这种可以一劳永逸,以后直接通过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版本,这样就可以直接运行了。
文章来源于互联网:umi项目启动报错node:internal/crypto/hash:71this[kHandle] = new _Hash(algorithm, xofLen);