为什么npm run serve正常,npm run build就报错:digital envelope routines::unsupported

简介: 通过本文的分析,我们详细介绍了 `npm run serve`正常但 `npm run build`时报错:`digital envelope routines::unsupported`的原因及解决方案。主要从检查Node.js版本、更新依赖、检查依赖库、配置文件及环境变量等方面进行了深入探讨。希望本文能帮助开发者解决这一问题,确保项目顺利构建和部署。

解决npm run build时报错:digital envelope routines::unsupported

一、前言

在使用Vue CLI或其他前端构建工具时,开发者常常遇到 npm run serve运行正常,但 npm run build时报错的问题。具体错误信息为:digital envelope routines::unsupported。本文将深入分析这一问题的原因,并提供详细的解决方案。

二、问题分析

1. 错误信息解析

digital envelope routines::unsupported错误通常与加密算法或SSL/TLS相关,表示在执行加密操作时使用了不受支持的算法。这种错误在Node.js应用中可能由于多种原因引发,常见的包括依赖库不兼容、Node.js版本问题或构建配置错误。

2. 可能原因

  1. Node.js版本不兼容:不同版本的Node.js对加密算法的支持有所不同,某些版本可能缺少特定的算法支持。
  2. 依赖库问题:某些库在不同的运行环境下表现不同,例如开发环境和生产环境。
  3. 环境变量或配置文件:开发环境和生产环境使用的配置文件可能不同,导致某些参数在构建时未正确传递。

三、解决方案

1. 检查Node.js版本

确保Node.js版本兼容。建议使用LTS(长期支持)版本,以获得更好的稳定性和兼容性。

node -v
​

如果Node.js版本过旧,建议升级到最新的LTS版本:

nvm install --lts
nvm use --lts
​

2. 更新依赖

确保项目依赖库是最新版本。使用以下命令更新依赖:

npm install -g npm-check-updates
ncu -u
npm install
​

3. 检查依赖库

排查依赖库中是否存在不兼容的版本。常见的解决方法是删除 node_modules目录和 package-lock.json文件,然后重新安装依赖:

rm -rf node_modules package-lock.json
npm install
​

4. 配置文件

确保开发环境和生产环境使用的配置文件一致。在某些情况下,配置文件中的某些参数在生产环境中未正确传递,可能导致错误。检查 vue.config.js或其他相关配置文件,确保所有环境变量和配置参数正确传递。

module.exports = {
  // Vue CLI 配置示例
  configureWebpack: {
    // 配置选项
  },
  chainWebpack: config => {
    // 链式配置
  }
}
​

5. 设置环境变量

确保正确设置了环境变量,某些加密算法需要特定的环境变量才能正常工作。在构建脚本中添加环境变量设置:

"scripts": {
  "serve": "vue-cli-service serve",
  "build": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build"
}
​

6. 检查依赖库的构建工具配置

某些依赖库在构建时可能需要特定的配置,例如Babel、Webpack等。确保这些工具的配置文件中正确配置了相关选项。以下是一个示例:

// babel.config.js
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}

// webpack.config.js
module.exports = {
  // Webpack 配置示例
  module: {
    rules: [
      {
        test: /.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
        }
      }
    ]
  }
}
​

四、实际应用示例

示例项目

以下是一个Vue项目的示例配置,展示了如何应用上述解决方案:

// package.json
{
  "name": "my-vue-app",
  "version": "1.0.0",
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build"
  },
  "dependencies": {
    "vue": "^3.0.0"
  },
  "devDependencies": {
    "@vue/cli-service": "^4.5.0",
    "babel-loader": "^8.0.0"
  }
}

// vue.config.js
module.exports = {
  configureWebpack: {
    // 自定义 Webpack 配置
  }
}

// babel.config.js
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}
​

五、总结

通过本文的分析,我们详细介绍了 npm run serve正常但 npm run build时报错:digital envelope routines::unsupported的原因及解决方案。主要从检查Node.js版本、更新依赖、检查依赖库、配置文件及环境变量等方面进行了深入探讨。希望本文能帮助开发者解决这一问题,确保项目顺利构建和部署。

目录
相关文章
|
16天前
|
JavaScript 算法 前端开发
解决若依框架中 npm run dev 卡在 95% 的问题
本文深入探讨若依框架中 `npm run dev` 卡在 95% 的问题,分析其与 Node.js 17+ 内置 OpenSSL 3.0 加密策略变更的关系。提供临时(设置环境变量 `NODE_OPTIONS=--openssl-legacy-provider`)和永久(修改 `package.json` 脚本)解决方案,同时建议降级 Node.js 或更新依赖以根本解决兼容性问题。最后强调依赖管理与开发环境标准化的重要性,助力团队高效开发。
67 1
|
1月前
|
移动开发 JavaScript 前端开发
vue中npm打包遇到× eslint —fix found some errors. Please fix them and try committing again.husky > pre-commit hook failed (add —no-verify to bypass)报错解决方案-卓伊凡
vue中npm打包遇到× eslint —fix found some errors. Please fix them and try committing again.husky > pre-commit hook failed (add —no-verify to bypass)报错解决方案-卓伊凡
98 7
vue中npm打包遇到× eslint —fix found some errors. Please fix them and try committing again.husky > pre-commit hook failed (add —no-verify to bypass)报错解决方案-卓伊凡
|
16天前
|
JavaScript 算法 前端开发
nodejs18版本 npm run dev失败
在使用若依框架运行 `npm run dev` 时,若卡在 95% 并报错,通常是 Node.js 17+ 与 Webpack 的兼容性问题。原因是 OpenSSL 3 的加密算法变化导致依赖冲突。解决方法:Windows 下运行 `set NODE_OPTIONS=--openssl-legacy-provider`,macOS/Linux 使用 `export NODE_OPTIONS=--openssl-legacy-provider`,然后重新启动开发服务即可。此设置让 Node.js 启用旧版加密支持,恢复正常构建流程。
82 0
|
4月前
|
JavaScript
node环境之Error: Cannot find module ‘chalk’ 报错无法解决的问题—-网上说让你npm install chalk 基本是没有用的-优雅草央千澈解决方案
node环境之Error: Cannot find module ‘chalk’ 报错无法解决的问题—-网上说让你npm install chalk 基本是没有用的-优雅草央千澈解决方案
378 13
node环境之Error: Cannot find module ‘chalk’ 报错无法解决的问题—-网上说让你npm install chalk 基本是没有用的-优雅草央千澈解决方案
|
3月前
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
88 3
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
|
3月前
|
存储 资源调度 JavaScript
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具。npm 是官方默认的包管理器,提供依赖管理、安装和更新等功能;cnpm 是由阿里巴巴开发的 npm 镜像,专为中国大陆用户优化,解决下载速度慢的问题;pnpm 通过硬链接技术提高安装速度并节省磁盘空间,特别适合磁盘资源紧张的环境。三者命令类似,但各有特色,开发者可根据需求选择合适的工具。
304 5
|
10月前
|
前端开发
windows10 安装node npm 等前端环境 并配置国内源
windows10 安装node npm 等前端环境 并配置国内源
513 3
|
6月前
|
缓存 资源调度 JavaScript
npx与npm的差异解析,以及包管理器yarn与Node版本管理工具nvm的使用方法详解
npx与npm的差异解析,以及包管理器yarn与Node版本管理工具nvm的使用方法详解
270 0
2071 verbose node v16.6.0 2072 verbose npm v7.19.1或者 no such file or directory, lstat ‘D:\wor
该博客文章提供了解决在使用npm版本7.19.1时出现的"no such file or directory"错误的具体方法,建议通过降级npm到6.14.8版本来解决问题,并确认了该方法可以成功安装node_modules。
2071 verbose node v16.6.0 2072 verbose npm v7.19.1或者 no such file or directory, lstat ‘D:\wor
|
8月前
|
缓存 JavaScript 前端开发
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】
这篇文章介绍了如何解决npm版本与Node.js版本不兼容的问题,提供了查看当前npm和Node.js版本的步骤,以及如何根据Node.js版本选择合适的npm版本并进行升级的详细指导。
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】

热门文章

最新文章

推荐镜像

更多
下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等