Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath启动vue项目安装依赖出了问题,删除node_modules重新install后问题并没有解

控制台出现如下热警告

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 依赖冲突跑不动)

  1. 确认Node.js版本: 首先,确认你的Node.js版本。在命令行中运行 node -v 来查看当前的版本号,并检查项目的 package.json 文件中是否有 engines 字段,它定义了项目兼容的Node.js版本范围。

  2. 使用 --legacy-peer-deps 选项(忽略冲突、各自安装): 如果你确定Node.js版本不是问题的根本原因,可以尝试使用 --legacy-peer-deps 选项来忽略peer依赖的版本冲突。这个选项在npm 7及以上版本中可用:

  3. npm install --legacy-peer-deps

    这将允许你安装依赖,即使它们之间存在版本冲突。但请注意,这可能会导致运行时错误,因为某些包可能不兼容。

  4. 手动解决依赖冲突: 如果 --legacy-peer-deps 选项无法解决问题,你可能需要手动检查和解决依赖冲突。这通常涉及到查看 package.jsonpackage-lock.json 文件,找出存在冲突的包,并更新 package.json 中的依赖版本以解决冲突。

  5. (需要不停切换版本、较为麻烦)使用nvm管理Node.js版本: 为了避免版本不一致的问题,可以使用nvm(Node Version Manager)来管理不同项目的Node.js版本。这样,你可以为每个项目设置特定的Node.js版本。安装nvm后,可以使用以下命令切换Node.js版本:

    nvm use <version>

    在项目目录中运行此命令,然后再次尝试安装依赖。

  6. (特殊情况才会有)设置环境变量: 对于某些由于Node.js版本过高导致的特定错误(如 ERR_OSSL_EVP_UNSUPPORTED),可以通过设置环境变量来解决:

    set NODE_OPTIONS=--openssl-legacy-provider

    这告诉Node.js使用旧版本的OpenSSL算法。

  7. 修改package.json文件: 在package.json的scripts部分,添加环境变量设置,例如:

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

    这样可以在执行脚本时自动设置环境变量。

  8. 降级Node.js版本: 如果上述方法都不适用,可以考虑降级Node.js到一个较低的版本,确保与项目兼容。可以使用nvm来安装和切换到旧版本的Node.js。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值