@babel/plugin-proposal-xxx-object@7.21.0-placeholder-for-preset-env.2

303 阅读2分钟

最近由于电脑重做了系统,然后,对之前用 @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 仓库,发现:

image.png

这里有个写法,从语义上分析,应该是 非Babel8 才会使用这个 @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2 这个依赖;

所以,我有查了 npm@babel/plugin-proposal-private-property-in-object 包,

image.png

已给出提示,这个包已经不能使用了;

所以,再回到 @babel/preset-env包,寻找没有使用 @babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2 的版本的包;

这就是个耐心的活了,

  1. 要查 @babel/preset-env 包是否已在后续版本中做修复,发现 @babel/preset-env 最新版本 version: 7.23.5还是用用的这种写法,证明,后续更新的版本中并没有做修复;

  2. 查最后一个没有使用 @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 这个包的引用;

如下图: image.png


接下来就是如何修复项目中,安装报错的问题了:

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

结果:

成功安装;

问题得以解决;