uni-app 小程序编译报错 在node最新版中 提示不支持NODE_OPTIONS=--openssl-legacy-provider
uni-app 小程序编译报错 在node最新版中 提示不支持NODE_OPTIONS=–openssl-legacy-provider
HBuilderX内置的Node版本是v12.22.1,此版本的Node,NODE_OPTIONS没有–openssl-legacy-provider 。
临时解决方案:把环境变量中的NODE_OPTIONS去掉
我的环境变量里确定没有这一条,但是还是会报这个错,3.7.13.20230411-alpha
回复 nry0012: 不可能呀。如果方便提供下QQ,我们远程看看
回复 DCloud_HB_WDL: 我也没有 也报错
我的node版本是 18.16.0 npm的版本是9.5.1,我的uniapp运行到微信小程序报错,但是我的vue项目要加这个NODE_OPTIONS :–openssl-legacy-provider 。这个环境变量,vue项目要是没这个环境变量就运行报错
什么时候可以解决啊,环境变量中的NODE_OPTIONS还有用呢
我也提示这个报错,版本号:3.8.12.20230817
出现了同样的问题,到底怎么解决?
同样问题,求解决方案
在 uni-app
开发小程序时,如果你在最新的 Node.js 版本中遇到 NODE_OPTIONS=--openssl-legacy-provider
相关的错误,通常是因为 Node.js 18 及以上版本默认使用了 OpenSSL 3.0,而某些依赖库可能还不兼容 OpenSSL 3.0,导致编译失败。
解决方法
方法 1: 使用 NODE_OPTIONS=--openssl-legacy-provider
你可以在运行命令时设置 NODE_OPTIONS
环境变量,强制使用旧版的 OpenSSL 提供者。
export NODE_OPTIONS=--openssl-legacy-provider
npm run dev:mp-weixin
或者在 Windows 上:
set NODE_OPTIONS=--openssl-legacy-provider
npm run dev:mp-weixin
方法 2: 降级 Node.js 版本
如果你不想每次运行命令时都设置环境变量,可以考虑降级 Node.js 到 16.x 版本,因为 Node.js 16.x 默认使用 OpenSSL 1.1.x,兼容性更好。
- 卸载当前 Node.js 版本。
- 安装 Node.js 16.x 版本。
你可以使用 nvm
(Node Version Manager)来管理 Node.js 版本:
nvm install 16
nvm use 16
方法 3: 更新依赖库
如果可能的话,检查并更新你的项目依赖库,确保它们支持 OpenSSL 3.0。你可以通过以下命令更新依赖:
npm update
或者手动更新 package.json
中的依赖版本,然后重新安装:
npm install
方法 4: 修改项目配置
如果你使用的是 uni-app
的 vue-cli
模板,可以尝试修改 vue.config.js
或 webpack
配置,以兼容 OpenSSL 3.0。
// vue.config.js
module.exports = {
configureWebpack: {
node: {
global: false,
__filename: false,
__dirname: false,
},
},
};