前端项目启动(npm run dev)和打包时(npm run build:prod)报出如下错误,

 

问题原因:

经过一番探索,终于找到了症结所在:主要是nodeJs V17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,nodeJs v17之前版本没影响,但V17和之后版本会出现这个错误。

一句话总结,说白了就是npm升级导致与 openssl 不兼容导致的初始化失败,也就是node.js版本过高的原因造成的运行失败。

解决办法

方式一:通过更改环境变量,进行控制

1、(仅windows)在package.json的scripts中新增SET NODE_OPTIONS=--openssl-legacy-provider

添加前:

"scripts": {
    "dev": "vue-cli-service serve",
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "build:prod": "vue-cli-service build",
    "test:unit": "vue-cli-service test:unit",
    "lint": "vue-cli-service lint",
    "build:preview": "vue-cli-service build --mode preview",
    "lint:nofix": "vue-cli-service lint --no-fix"
  },

添加后

"scripts": {
    "dev": "vue-cli-service serve",
    "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
    "build:prod": "vue-cli-service build",
    "test:unit": "vue-cli-service test:unit",
    "lint": "vue-cli-service lint",
    "build:preview": "vue-cli-service build --mode preview",
    "lint:nofix": "vue-cli-service lint --no-fix"
  },

注意:如果团队中node版本不一致,不要将该package.json提交。

2、与第一种方法类似,在编辑器集成终端里,直接设置环境变量,进行控制(只能临时解决)

找到package.json文件右键,在集成终端中打开后,直接输入set NODE_OPTIONS=--openssl-legacy-provider 或 $env:NODE_OPTIONS="--openssl-legacy-provider"回车,然后npm run serve重新运行项目即可。

Linux & Mac OS:
export NODE_OPTIONS=--openssl-legacy-provider
Windows:
set NODE_OPTIONS=--openssl-legacy-provider
或者打开IDEA 终端,直接输入(问题解决)
$env:NODE_OPTIONS="--openssl-legacy-provider"

方式二:更换node.js版本

本人是采用第一种方案解决的,大家可以试试,希望可以帮到大家

 

GitHub 加速计划 / vu / vue
207.52 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:1 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 3 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 3 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐