2025年3月, Node.js V14.X发布 2025年3月, Node.js V23.X 2025年4月,现代的剑斩狂砍陈旧的藤,俺偏要用Node.js v23运行
Q1、项目npm run dev启动报错
//Error: error:0308010C:digital envelope routines::unsupported
opensslErrorStack: [
'error:03000086:digital envelope routines::initialization error',
'error:0308010C:digital envelope routines::unsupported'
],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
报错:digital envelope routines::unsupported
Tate解决: Node.js版本过高导致的OpenSSL兼容性问题。您使用的是Node.js v23.7.0,而项目中的依赖更适合较旧的Node.js版本。Node.js v23默认使用的OpenSSL 3.0
Apply
修改package.json文件,配置这两句 增加set NODE_OPTIONS=--openssl-legacy-provider --&&
为:
"scripts": {
"dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build:prod": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
"build:stage": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode staging",
// ... 其他脚本保持不变 ...
},
只用修改这个一个配置,现在网站可以正常运行。
Q2、util._extend API 废弃 ,使用Object.assign
我们注意到这里有一句话DeprecationWarning: The
util._extend
API is deprecated. Please use Object.assign() instead.Trae AI:这个警告是由于项目中某些依赖使用了Node.js中已废弃的 util._extend API导致的。同时给出三种解决方案:
1) 最佳解决方案
2) 临时解决方案
3) 长期建议
考虑将项目升级到Vue 3生态系统,因为:
- Vue 2已停止维护
- 新版依赖都使用现代API
- 能获得更好的性能和功能支持 建议先尝试方案1,这是最彻底的解决方法。如果遇到兼容性问题,再使用方案2临时解决。
4) 问题复现
使用 node --trace-deprecation 来定位具体的废弃API警告来源,可以修改package.json中的scripts部分:
Q3、Syntax Error: Error: Node Sass 不支持你的系统环境
Tare AI:因为你使用的 node-sass 已经过时且不支持当前的Node.js环境。
刚好有个掘友 的吐槽 《关于vue项目中的臭恶 node-sass 安装报错问题解决》
用AI给的两句话,还是不行,暂时没辙,使用了安装过旧版本的node_modules过渡。
总结
实测老旧项目是可以Node.js用新版本运行的,遇见具体错误各个击破,兵来将挡水来土掩,尽可能不做技术自我降级是我们最后的底线。技术需要追求更高、更快、更强。新质生产力,首先从新技术的探索开始,不服就干生命在于折腾。