Error: error:0308010C:digital envelope routines::unsupported

错误解决

  • 前言:
    • 一般`npm`报错解决
    • 常见的npm 和node 版本对应关系
  • 1、报错详情:
  • 2、原因分析:
  • 3、解决方案:
    • 3.1 更改系统环境变量
    • 3.2 更改项目环境变量来解决
    • 3.3 更换NodeJs版本来解决

前言:

一般npm报错解决

npm 17之后版本冲突的报错可能会表现为:

  1. ERESOLVE 错误:这通常发生在npm尝试解析项目依赖关系时,发现有冲突的版本要求。npm不知道应该安装哪个版本,因此无法继续。
  2. peer dependency 错误:这表示项目中有一个或多个包依赖于特定版本的另一个包,但安装的版本不满足要求。
    解决 npm 17 之后版本冲突的报错,你可以尝试以下几种方法:
  3. 更新 package.json 中的依赖版本号:确保你的 package.json 文件中所有依赖的版本号都是最新的,或者至少是已知兼容的版本。
  4. 使用 npm install --legacy-peer-deps 命令:这条命令会忽略 peerDependencies 的版本限制,可能会解决依赖冲突问题。
  5. 清空 node_modulespackage-lock.json 文件:删除 node_modules 文件夹和 package-lock.json 文件,然后重新运行 npm install
  6. 更换包管理器:试试看是否可以使用 yarnpnpm 来代替 npm,它们可能对解决依赖冲突有更好的效果。
  7. 检查网络连接:确保你的网络连接正常,并且可以访问 npm 的仓库。有时候,网络问题可能会导致依赖安装失败。
    如果上述方法都不能解决问题,那么可能需要检查项目中 package.json 中的依赖是否正确。如果可能,也可以考虑回退到 npm 的上一个版本,看看是否还存在相同的问题。

常见的npm 和node 版本对应关系

当使用npm 17或更高版本时,可能会遇到版本冲突的报错。这通常发生在以下情况:

当项目中的依赖项之间存在不兼容的版本时,npm无法解析依赖关系并会报错。
如果项目中存在peer dependencies,即某些包依赖于特定版本的另一个包,但安装的版本不满足要求,也会导致报错。
为了解决npm 17之后版本冲突的报错,可以尝试以下几种方法:

  1. 更新package.json中的依赖版本号:确保package.json文件中所有依赖的版本号都是最新的,或者至少是已知兼容的版本。这样可以确保安装的依赖版本之间不会发生冲突。
  2. 使用npm install --legacy-peer-deps命令:这条命令会忽略peerDependencies的版本限制,允许npm继续执行安装操作,可能会解决依赖冲突问题。
  3. 清空node_modulespackage-lock.json文件:删除node_modules文件夹和package-lock.json文件,然后重新运行npm install。这将重新安装项目的依赖项,并可能解决依赖冲突问题。
  4. 更换包管理器:尝试使用yarnpnpm作为替代包管理器,它们可能对解决依赖冲突有更好的效果。
  5. 检查网络连接:确保网络连接正常,并且可以访问npm的仓库。有时候网络问题可能会导致依赖安装失败。
    如果以上方法都不能解决问题,那么可能需要检查项目中package.json中的依赖是否正确。如果可能,也可以考虑回退到npm的上一个版本,看看是否还存在相同的问题。

VUE项目中运行npm run dev 报错。

Error: error:0308010C:digital envelope routines::unsupported

解决方案
https://www.cnblogs.com/asplover/p/17188483.html

Error: error:0308010C:digital envelope routines::unsupported_第1张图片
Error: error:0308010C:digital envelope routines::unsupported_第2张图片

1、报错详情:

69% building 2056/2057 modules 1 active E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui\node_modules\.store\zrender@5.4.0\node_modules\zrender\lib\tool\convert95% emitting CompressionPlugin ERROR  Error: error:0308010C:digital envelope routines::unsupported
Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:133:10)
    at E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui\node_modules\.store\compression-webpack-plugin@5.0.2\node_modules\compression-webpack-plugin\dist\index.js:243:42
    at CompressionPlugin.compress (E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui\node_modules\.store\compression-webpack-plugin@5.0.2\node_modules\compression-webpack-plugin\dist\index.js:284:9)
    at E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui\node_modules\.store\compression-webpack-plugin@5.0.2\node_modules\compression-webpack-plugin\dist\index.js:305:12
    at _next1 (eval at create (E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui\node_modules\.store\tapable@1.1.3\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:14:17)
    at eval (eval at create (E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui\node_modules\.store\tapable@1.1.3\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:33:1)
    at E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui\node_modules\.store\copy-webpack-plugin@5.1.2\node_modules\copy-webpack-plugin\dist\index.js:91:9       
PS E:\Shuoyun\ShuoYunSVN\项目\渠道销售管理系统\code\channel_sales-ui>

2、原因分析:

1、在node.js V17以前一些可以正常运行的的应用程序,但是在 V17 版本可能会抛出以下异常:
2、查看相关资料,大致的意思是 node版本在 17+版本后增加了OpenSSL3.0,对允许算法和密钥大小增加了严格的限制

node:internal/crypto/hash:67
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at module.exports.__webpack_modules__.57442.module.exports (/Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:135907:62)
    at NormalModule._initBuildHash (/Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:109317:16)
    at handleParseError (/Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:109371:10)
    at /Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:109403:5
    at /Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:109258:12
    at /Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:61157:3
    at iterateNormalLoaders (/Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:60998:10)
    at Array.<anonymous> (/Users/workspace/React/umiapp/node_modules/@umijs/deps/compiled/webpack/4/bundle4.js:60989:4) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v17.0.1
✨  Done in 1.92s.

3、解决方案:

3.1 更改系统环境变量

①Windows平台

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

②Linux / Mac 平台

export NODE_OPTIONS=–openssl-legacy-provider

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

3.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"
  },

主要是将dev这一行的代码改为

 "dev": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve",

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

3.3 更换NodeJs版本来解决

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

你可能感兴趣的:(Web端+HTML+CSS,arcgis)