控制台出现如下热警告
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@achrinza/node-ipc@9.2.2',
npm WARN EBADENGINE required: { node: '8 || 10 || 12 || 14 || 16 || 17' },
npm WARN EBADENGINE current: { node: 'v20.11.1', npm: '10.2.4' }
npm WARN EBADENGINE }
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated glob@5.0.15: Glob versions prior to v9 are no longer supported
npm WARN deprecated html-webpack-plugin@3.2.0: 3.x is no longer supported
npm WARN deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
npm WARN deprecated browserslist@2.11.3: Browserslist 2 could fail on reading Browserslist >3.0
config used in other tools.
npm WARN deprecated @hapi/address@2.1.4: Moved to 'npm install @sideway/address'
npm WARN deprecated shvl@2.0.3: older versions vulnerable to prototype pollution
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated vuex-persistedstate@3.2.0: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
npm WARN deprecated messageformat@2.3.0: Package renamed as '@messageformat/core', see messageformat.github.io for more details. 'messageformat' will eventually provide a polyfill for Intl.MessageFormat, once it's been defined by Unicode & ECMA.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use
Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/joi@15.1.1: Switch to 'npm install joi'
npm WARN deprecated puppeteer@3.3.0: < 19.4.0 is no longer supported
npm WARN deprecated svgo@1.3.2: This SVGO version is no longer supported. Upgrade to v2.x.x.
npm WARN deprecated vue@2.7.16: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.
研究一番后得出的结论是:nodejs版本过高,需要降级到20版本(项目有点久,有些依赖升级了npm i 依赖冲突跑不动)
-
确认Node.js版本: 首先,确认你的Node.js版本。在命令行中运行
node -v
来查看当前的版本号,并检查项目的package.json
文件中是否有engines
字段,它定义了项目兼容的Node.js版本范围。 -
使用
--legacy-peer-deps
选项(忽略冲突、各自安装): 如果你确定Node.js版本不是问题的根本原因,可以尝试使用--legacy-peer-deps
选项来忽略peer依赖的版本冲突。这个选项在npm 7及以上版本中可用: -
npm install --legacy-peer-deps
这将允许你安装依赖,即使它们之间存在版本冲突。但请注意,这可能会导致运行时错误,因为某些包可能不兼容。
-
手动解决依赖冲突: 如果
--legacy-peer-deps
选项无法解决问题,你可能需要手动检查和解决依赖冲突。这通常涉及到查看package.json
和package-lock.json
文件,找出存在冲突的包,并更新package.json
中的依赖版本以解决冲突。 -
(需要不停切换版本、较为麻烦)使用nvm管理Node.js版本: 为了避免版本不一致的问题,可以使用nvm(Node Version Manager)来管理不同项目的Node.js版本。这样,你可以为每个项目设置特定的Node.js版本。安装nvm后,可以使用以下命令切换Node.js版本:
nvm use <version>
在项目目录中运行此命令,然后再次尝试安装依赖。
-
(特殊情况才会有)设置环境变量: 对于某些由于Node.js版本过高导致的特定错误(如
ERR_OSSL_EVP_UNSUPPORTED
),可以通过设置环境变量来解决:set NODE_OPTIONS=--openssl-legacy-provider
这告诉Node.js使用旧版本的OpenSSL算法。
-
修改package.json文件: 在package.json的scripts部分,添加环境变量设置,例如:
"dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --open",
这样可以在执行脚本时自动设置环境变量。
-
降级Node.js版本: 如果上述方法都不适用,可以考虑降级Node.js到一个较低的版本,确保与项目兼容。可以使用nvm来安装和切换到旧版本的Node.js。