最近把node升级到18,写新项目还行,但是那些老项目用vue2写的老是报错,无法启动,打包不了,安装网上的说法,整理了一下,最终还是决定装双node来解决
一:报错内容
Error: error:0308010C:digital envelope routines::unsupported
这个报错原因是:node17发布的OpenSSl3.0对允许算法和密钥大小增加了限制
第一种解决方案:在server添加openssl-legacy-provider ,但这种弊端也很明显,运行没问题,打包有包这个错了
"serve": "set NODE_OPTIONS=\"--openssl-legacy-provider\" & vue-cli-service serve --open --port 8098"
第二种方案:在windows下设置这个,没什么用
set NODE_OPTIONS=–openssl-legacy-provider
第三种:降低node版本到16,可以一劳永逸,但是难道以后就不升级node了吗
第四种:就是今天要说的使用nvm装双Node版本来控制
二:nvm下载安装
下载地址
安装包下载地址: https://github.com/coreybutler/nvm-windows/releases
然后就是傻瓜式一键安装,安装完成后命令启动一下exe,然后输入nvm查看是否安装成功
关键的步骤
这个文件添加下面代码,防止下载失败,如果不让修改,直接删除,建个txt文件复制进来就行
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
重点来了:一定要用管理员启动命令行 别当牛马 不然怎么安装node都会失败的
安装node版本
nvm install 18.17.1
nvm list //查看所有下载的node版本
nvm use 版本号 //切换node
最后,坑又来了,启动项目会报错
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查
直接用用管理员启动vscode即可