likes
comments
collection
share

简讯|开原仓库BUG,波及 bpmn-js 和 logicflow 等

作者站长头像
站长
· 阅读数 20

简讯:ids@1.0.4 构建失败缺陷事件

一、一句话表达:

近日,受 bpmn-io/ids 开源库 ,ids@1.0.4 构建失败缺陷影响,使用该版本 ids@1.0.4 会导致工程启动失败。(今日:2023/7/16)

简讯|开原仓库BUG,波及 bpmn-js 和 logicflow 等

简讯|开原仓库BUG,波及 bpmn-js 和 logicflow 等

// 类似报错信息

This dependency was not found: *ids in ./node_module/@logicflow/extension/es/bpmn/getBpmnId.j, ./node_modules/@logicflow/extension/es/bpmn-adapter/bpmnids.js To install it, you can run: npm install --save ids

二、影响范围:

简讯|开原仓库BUG,波及 bpmn-js 和 logicflow 等

2.1 被直接影响: 

bpmn-js 系列工程,didi/LogicFlow 等 3000+ 开源仓库及其使用者可能会受到影响。

2.2 被间接影响:

上述开源仓库的引用者可能会受到影响。且,ids 的间接用户更被动。

2.3 需更担心的用户:

ids 依赖的使用,未指定低于 v1.0.4 的固定版本号,采用了 ^ 或 ~ 升级策略且未采取类似 package-lock.json 锁定依赖版本措施的用户。

2.4 少担心的用户:

ids 依赖的使用,采取了类似 package-lock.json 锁定依赖版本措施,或指定了低于 v1.0.4 的固定版本号的用户,不手动升级的情形下,各环境使用不会被影响。

2.5 仍需关注的是:

ids v1.0.4 build error #8 的修复时间以及可能的风险

2.6 值得一提的是:

bpmn-io/ids 的 v1.0.4 是个有点特殊的版本,目前(2023/7/16 上午)它的下一个版本是 v2.0.0,这意味着所有使用了该仓库的主版本为 v1 的采取了 ^ 或 ~ 升级策略的用户都会被命中,并可能受到影响。另外, 其 v2.0.0、v1.0.4 和 v1.0.3 均为近几日推出的版本。

2.7 产生该问题的原因是:

bpmn-io/ids 依赖在由 ids 依赖 1.0.3 升级到 1.0.4 时,ids@1.0.4 依赖构建失败,导致安装了该版本的依赖的工程启动失败。这是 bpmn-io/ids 1.0.4 构建失败的 bug#8 导致的( bpmn-io/ids#8 )。

2.7 参考解决办法:

使用 ids 旧版依赖(即低于 ids@1.0.4 的版本),或使用其他方案替代 ids 依赖。

// 例如,通过 npm 安装 ids 指定版本 v1.0.3
// 需要注意的是,如果 ids 不是 root project 需要的依赖,而是依赖需要的依赖,
// 建议使用 lock 锁定的旧版依赖,而不是将 ids 添加到 root project 的 packagejson 中
// 因为经此事件后,一些插件可能会移除该依赖,寻求替代方案,这就可能会导致后期 ids 多余。
npm install --save ids@1.0.3

2.8 风险评估

综合 github bpmn-io/ids 主要干系仓库信息,暂未发现有攻击性风险。未采取锁定依赖版本措施,尤其是采取远程仓库自动打包部署的工程;如近日发版,被该缺陷事件命中的可能性很高。采取了锁定依赖版本措施的工程,基本无事,如手动升级版本则需关注。

三、学到了:

  • ①工程建议采取类似 package-lock.json 锁定依赖版本措施。
  • ② ^ 或 ~ 升级策略建议减少使用,尤其是维护力量较弱的团队。

推荐阅读: 工程的 package.json 中的 ^~ 该保留吗?