uni-app 小程序编译报错 在node最新版中 提示不支持NODE_OPTIONS=--openssl-legacy-provider

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 小程序编译报错 在node最新版中 提示不支持NODE_OPTIONS=–openssl-legacy-provider

10 回复

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,兼容性更好。

  1. 卸载当前 Node.js 版本。
  2. 安装 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-appvue-cli 模板,可以尝试修改 vue.config.jswebpack 配置,以兼容 OpenSSL 3.0。

// vue.config.js
module.exports = {
  configureWebpack: {
    node: {
      global: false,
      __filename: false,
      __dirname: false,
    },
  },
};
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!