node:internal/crypto/hash:71 this[kHandle] = new _Hash(algorithm, xofLen)

报错现象:
node:internal/crypto/hash:71 this[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 

这种可以一劳永逸,以后直接通过npm执行scripts里面的命令即可。不管是项目迭代,还是团队开发,这种都比较有效。

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

NODE_OPTIONS=--openssl-legacy-provider
npm run serve

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

解决方法3
就是nodejs版本回退到16版本,这样就可以直接运行了。
https://nodejs.org/download/release/v16.20.0/

你可能感兴趣的:(javascript)