npm
报错解决npm 17
之后版本冲突的报错可能会表现为:
ERESOLVE
错误:这通常发生在npm尝试解析项目依赖关系时,发现有冲突的版本要求。npm不知道应该安装哪个版本,因此无法继续。peer dependency
错误:这表示项目中有一个或多个包依赖于特定版本的另一个包,但安装的版本不满足要求。npm 17
之后版本冲突的报错,你可以尝试以下几种方法:package.json
中的依赖版本号:确保你的 package.json
文件中所有依赖的版本号都是最新的,或者至少是已知兼容的版本。npm install --legacy-peer-deps
命令:这条命令会忽略 peerDependencies
的版本限制,可能会解决依赖冲突问题。node_modules
和 package-lock.json
文件:删除 node_modules
文件夹和 package-lock.json
文件,然后重新运行 npm install
。yarn
或 pnpm
来代替 npm
,它们可能对解决依赖冲突有更好的效果。npm
的仓库。有时候,网络问题可能会导致依赖安装失败。package.json
中的依赖是否正确。如果可能,也可以考虑回退到 npm
的上一个版本,看看是否还存在相同的问题。当使用npm 17或更高版本时,可能会遇到版本冲突的报错。这通常发生在以下情况:
当项目中的依赖项之间存在不兼容的版本时,npm无法解析依赖关系并会报错。
如果项目中存在peer dependencies
,即某些包依赖于特定版本的另一个包,但安装的版本不满足要求,也会导致报错。
为了解决npm 17之后版本冲突的报错,可以尝试以下几种方法:
package.json
中的依赖版本号:确保package.json
文件中所有依赖的版本号都是最新的,或者至少是已知兼容的版本。这样可以确保安装的依赖版本之间不会发生冲突。npm install --legacy-peer-deps
命令:这条命令会忽略peerDependencies
的版本限制,允许npm继续执行安装操作,可能会解决依赖冲突问题。node_modules
和package-lock.json
文件:删除node_modules
文件夹和package-lock.json
文件,然后重新运行npm install
。这将重新安装项目的依赖项,并可能解决依赖冲突问题。yarn
或pnpm
作为替代包管理器,它们可能对解决依赖冲突有更好的效果。npm
的仓库。有时候网络问题可能会导致依赖安装失败。package.json
中的依赖是否正确。如果可能,也可以考虑回退到npm
的上一个版本,看看是否还存在相同的问题。VUE项目中运行npm run dev
报错。
Error: error:0308010C:digital envelope routines::unsupported
解决方案
https://www.cnblogs.com/asplover/p/17188483.html
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>
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.
①Windows平台
我的电脑上右键 → 属性 → 高级系统设置 → 添加系统变量:NODE_OPTIONS = --openssl-legacy-provider
②Linux / Mac 平台
export NODE_OPTIONS=–openssl-legacy-provider
完成后,建议重新打开一个命令行窗口启动服务。
在 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 文件。
卸载本地NodeJs环境,暗转NodeJsV17之前的版本。