一些时候,因为一些依赖依赖的依赖版本比较低,会导致一些莫名的问题,比如下面这个,编译时 @react-spring 的报错:
代码语言:javascript复制Failed to compile.
./node_modules/@react-spring/web/dist/esm/index.js 113:11
Module parse failed: Unexpected token (113:11)
File was processed with these loaders:
* ./node_modules/react-scripts/node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
| this.transforms = i;
| }
> _value = null;
| get() {
| return this._value || (this._value = this._get());
搜了一下,这个报错还是非常典型的,但是排查起来就非常头大,即使在 package.json
中指定了依赖版本也无济于事。
这时候可以派 resolutions
出厂,解决这个问题。需要注意的是, resolutions
需要搭配 yarn 使用。
resolutions 选择性依赖解决
在 package.json
中添加 resolutions
配置:
{
"name": "project",
"version": "1.0.0",
"dependencies": {
"left-pad": "1.0.0",
"c": "file:../c-1",
"d2": "file:../d2-1"
},
"resolutions": {
"@react-spring/web": "9.6.1"
}
}
package.json
文件里的 resolutions
字段用于解析选择性版本,可以用来自定义依赖版本。
为什么使用 resolutions
- 有些时候,项目会依赖一个不常更新的包,但这个包又依赖另一个需要立即升级的包。 这时候,如果这个(不常更新的)包的依赖列表里不包含需要升级的包的新版本,那就只能等待作者升级,没别的办法。
- 项目的子依赖(依赖的依赖)需要紧急安全更新,来不及等待直接依赖更新。
- 项目的直接依赖还可以正常工作但已经停止维护,这时子依赖需要更新。 同时,你清楚子依赖的更新不会影响现有系统,但是又不想通过 fork 的方式来升级直接依赖。
- 项目的直接依赖定义了过于宽泛的子依赖版本范围,恰巧这其中的某个版本有问题,这时你想要把子依赖限制在某些正常工作的版本范围里。
这样就解决的编译时的依赖报错问题了。
本文关键词:依赖报错,依赖版本报错,Module parse failed: Unexpected token (113:11),编译时@react-spring报错
未经允许不得转载:w3h5-Web前端开发资源网 » 使用package.json文件里的resolutions,解决依赖版本问题导致的报错