一些时候,因为一些依赖依赖的依赖版本比较低,会导致一些莫名的问题,比如下面这个,编译时 @react-spring 的报错:
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
1. 有些时候,项目会依赖一个不常更新的包,但这个包又依赖另一个需要立即升级的包。 这时候,如果这个(不常更新的)包的依赖列表里不包含需要升级的包的新版本,那就只能等待作者升级,没别的办法。
2. 项目的子依赖(依赖的依赖)需要紧急安全更新,来不及等待直接依赖更新。
3. 项目的直接依赖还可以正常工作但已经停止维护,这时子依赖需要更新。 同时,你清楚子依赖的更新不会影响现有系统,但是又不想通过 fork 的方式来升级直接依赖。
3. 项目的直接依赖定义了过于宽泛的子依赖版本范围,恰巧这其中的某个版本有问题,这时你想要把子依赖限制在某些正常工作的版本范围里。
这样就解决的编译时的依赖报错问题了。
本文关键词:依赖报错,依赖版本报错,Module parse failed: Unexpected token (113:11),编译时@react-spring报错
未经允许不得转载:前端资源网 - w3h5 » 使用package.json文件里的resolutions,解决依赖版本问题导致的报错