Nodejs运行vue项目时,报错:Error: error:0308010C:digital envelope routines::unsupported



前端项目使用( npm run dev ) 运行vue项目时,出现错误:Error: error:0308010C:digital envelope routines::unsupported

经过探索,发现问题所在,主要是nodeJs V17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,导致了nodeJs V17之前版本不受影刺而nodeJs V17和之后的版本会出现这个错误。

也就是npm升级导致了与OpenSSL不兼容导致的初始化失败,也就是nodeJs版本过高的原因导致了运行失败。

系统安装的nodeJs版本正好是V18,因此出现了这个错误系统。

解决方案

1、更改系统环境变量来解决

2、更改项目环境变量来解决

3、更换NodeJs版本来解决
具体演示


1、更改系统环境变量 

①Windows平台

我的电脑上右键 → 属性 → 高级系统设置 → 添加系统变量:NODE_OPTIONS = --openssl-legacy-provider
 

②Linux / Mac 平台

export NODE_OPTIONS=--openssl-legacy-provider

完成后,建议重新打开一个命令行窗口启动服务。

2、更改项目环境变量来解决

2、更改项目环境变量来解决

①在 package.json 的 scripts 中新增:SET NODE_OPTIONS=--openssl-legacy-provider

添加前代码:

      "scripts": {
        "dev": "vue-cli-service serve",
        "build:prod": "vue-cli-service build",
        "build:stage": "vue-cli-service build --mode staging",
        "preview": "node build/index.js --preview",
        "lint": "eslint --ext .js,.vue src",
        "test:unit": "jest --clearCache && vue-cli-service test:unit",
        "test:ci": "npm run lint && npm run test:unit",
        "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
      },

添加后代码:

      "scripts": {
        "dev": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve",
        "build:prod": "vue-cli-service build",
        "build:stage": "vue-cli-service build --mode staging",
        "preview": "node build/index.js --preview",
        "lint": "eslint --ext .js,.vue src",
        "test:unit": "jest --clearCache && vue-cli-service test:unit",
        "test:ci": "npm run lint && npm run test:unit",
        "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml"
      },

这里需要注意的是,要是团队中的nodejs版本不一致,不要提交该 package.json 文件。
 

②与①类似,在编辑器集成终端里,直接设置环境变量进行控制(这种方式只能临时解决)

具体如下:

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

    // windows系统
    set NODE_OPTIONS=--openssl-legacy-provider
     
    // linux系统
    export NODE_OPTIONS=--openssl-legacy-provider
 

3、更换NodeJs版本来解决

卸载本地NodeJs环境,暗转NodeJsV17之前的版本。

相关推荐

  1. Vue 打包或运行时报Error: error:0308010C

    2024-03-23 14:14:01       205 阅读
  2. Nodejs引入模块运行时报

    2024-03-23 14:14:01       44 阅读
  3. 解决nodejs内存泄漏问题,项目无法运行

    2024-03-23 14:14:01       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 14:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 14:14:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 14:14:01       82 阅读
  4. Python语言-面向对象

    2024-03-23 14:14:01       91 阅读

热门阅读

  1. 自动化提取Python项目中的第三方库及其版本信息

    2024-03-23 14:14:01       46 阅读
  2. 01 mybatis

    2024-03-23 14:14:01       36 阅读
  3. leetcode 402.移掉k位数字

    2024-03-23 14:14:01       38 阅读
  4. k8s通过编排文件,实现服务的滚动更新

    2024-03-23 14:14:01       40 阅读
  5. Kali linux基本命令大全

    2024-03-23 14:14:01       36 阅读
  6. WSL的ubuntu中如何安装node.js

    2024-03-23 14:14:01       40 阅读
  7. centos7 配置ip

    2024-03-23 14:14:01       47 阅读
  8. Android开发之CardView概述与分析

    2024-03-23 14:14:01       41 阅读
  9. Linux初学(五)正则表达式

    2024-03-23 14:14:01       43 阅读
  10. Ubuntu下采用VSCode调试C/C++ (1)

    2024-03-23 14:14:01       37 阅读
  11. 并行流实现两个double [][] 数组相加,加快速度

    2024-03-23 14:14:01       33 阅读
  12. 什么情况下要做艾森克人格测试?

    2024-03-23 14:14:01       37 阅读