首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用package.json文件里的resolutions,解决依赖版本问题导致的报错

使用package.json文件里的resolutions,解决依赖版本问题导致的报错

作者头像
德顺
发布于 2023-08-25 13:38:00
发布于 2023-08-25 13:38:00
6.4K0
举报
文章被收录于专栏:前端资源前端资源

一些时候,因为一些依赖依赖的依赖版本比较低,会导致一些莫名的问题,比如下面这个,编译时 @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 配置:

代码语言:javascript
复制
{
  "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 的方式来升级直接依赖。
  4. 项目的直接依赖定义了过于宽泛的子依赖版本范围,恰巧这其中的某个版本有问题,这时你想要把子依赖限制在某些正常工作的版本范围里。

这样就解决的编译时的依赖报错问题了。

本文关键词:依赖报错,依赖版本报错,Module parse failed: Unexpected token (113:11),编译时@react-spring报错

未经允许不得转载:w3h5-Web前端开发资源网 » 使用package.json文件里的resolutions,解决依赖版本问题导致的报错

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • resolutions 选择性依赖解决
  • 为什么使用 resolutions
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档