最近由于电脑重做了系统,然后,对之前用 @vue/cli 创建的项目,做重新做项目依赖安装时报的一个错误:
运行:
npm install
报错:
npm ERR! notarget No matching version found for @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of '@babel/preset-env'
npm ERR! notarget
从报错信息上来看,是因为 @babel/preset-env
这个包里依赖了 @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2
;
但是,我的项目里并没有依赖 @babel/preset-env
,但是通过查看 npm 依赖树,发现,@vue/cli-plugin-babel
->@vue/babel-preset-app
->@babel/preset-env
如下:
├─┬ @vue/cli-plugin-babel@4.5.19
│ ├─ ......
│ ├─┬ @vue/babel-preset-app@4.5.19
│ │ ├── @babel/core@7.23.5 deduped
│ │ ├── ......
│ │ ├── @babel/preset-env@7.21.5 deduped
然后,查看 @babel/preset-env github 仓库,发现:
这里有个写法,从语义上分析,应该是 非Babel8 才会使用这个 @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2
这个依赖;
所以,我有查了 npm
上 @babel/plugin-proposal-private-property-in-object
包,
已给出提示,这个包已经不能使用了;
所以,再回到 @babel/preset-env
包,寻找没有使用 @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2
的版本的包;
这就是个耐心的活了,
-
要查
@babel/preset-env
包是否已在后续版本中做修复,发现@babel/preset-env
最新版本version: 7.23.5
还是用用的这种写法,证明,后续更新的版本中并没有做修复; -
查最后一个没有使用
@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2
的包,如图的方式:
对比,@babel/preset-env
的不同 realease 版本,通过查找对比发现,从版本 version: 7.22.5
开始的有的对
@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2
这个包的引用;
如下图:
接下来就是如何修复项目中,安装报错的问题了:
bash
npm ERR! notarget No matching version found for @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of '@babel/preset-env'
npm ERR! notarget
在项目中安装,@babel/preset-env@7.22.4
,锁定版本;
运行:
npm install @babel/preset-env@7.22.4 -D
结果:
成功安装;
问题得以解决;