问题:升级node版本v18以上,启动项目报错:
error:0308010C:digital envelope routines::unsupported
原因:在升级 Node.js 版本后,你遇到的这个问题可能是因为新版本的 Node.js 默认启用了更严格的加密库(OpenSSL 1.1.x),而旧版本的 Vue CLI 使用的一些依赖可能不兼容新的加密库。加上
export NODE_OPTIONS=--openssl-legacy-provider
是为了在运行vue-cli-service serve
命令时,将 Node.js 的加密库切换回旧版本(OpenSSL 1.0.x)以保持兼容性。具体来说,
export NODE_OPTIONS=--openssl-legacy-provider
这个环境变量设置告诉 Node.js 使用旧版的 OpenSSL 提供程序,以确保与旧的依赖关系兼容。这样做可以解决一些旧版本的依赖项在新版本 Node.js 中出现的加密相关问题。请注意,这仅仅是一个临时解决方案,为了确保项目的长期稳定性,建议尽快考虑升级或替换与 Vue.js 相关的依赖项,以适应新版本的 Node.js。
解决方法:
方法一:
1、在终端,先执行以下代码
export NODE_OPTIONS=--openssl-legacy-provider
2、 再启动项目
方法二:直接在package.json文件里添加修改
"scripts": {
"dev": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve ",
"build:prod": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build ",
方法三:每次执行前,先执行以下代码
$env:NODE_OPTIONS="--openssl-legacy-provider"
方法四:降低node版本,安装小于v18版本以下
注意不同系统的执行方法:
Mac:
export NODE_OPTIONS=--openssl-legacy-provider
Windows:
set NODE_OPTIONS=--openssl-legacy-provider