当yarn.lock被删除时,依赖项将安装为CommonJS,否则安装为ES模块

问题描述 投票:0回答:1

我们在使用yarn的JS项目上遇到了问题,如果我删除

yarn.lock
yarn install
,那么一切都会正常工作,并且依赖项将安装为CommonJS(如果我转到包文件,我可以看到它们使用
 require()
module.exports
),但是当我们提交
yarn.lock
并且项目在其他地方构建时,或者如果我说安装新的不相关依赖项,我会转到相同的包文件,我可以看到现在看起来像它们作为 ES 模块安装(我看到
import
export default

有谁知道什么可能导致这种行为?我们当前的解决方法是不在存储库中包含

yarn.lock
,如果我们需要安装新的依赖项,我们会删除
node_modules
目录和
yarn.lock
,这并不理想。

自从我们更新项目以使用 Node 18 以来,这种情况才开始发生(可能我们当时必须更新所有库,因此它可能与 Node 没有直接关系)。我们使用的是 Yarn 1.22.19。该项目是用 TypeScript 编写的,编译为 ES6 并用作其他项目的依赖项。

javascript yarnpkg
1个回答
0
投票

好吧,我想我明白了..我们没有直接使用 strip-ansi,但我们的一些依赖项确实如此。

在随后的纱线安装中,我们收到了如下警告:

“警告模式 [“strip-ansi@^6.0.1”] 正在尝试在同一目标中解包“/Users/pricca/Library/Caches/Yarn/v6/npm-strip-ansi-cjs-6.0.1- 9e26c63d30f53443e9489495b2105d37b67a85d9-integrity/node_modules/strip-ansi-cjs" 作为模式 ["strip-ansi-cjs@npm:strip-ansi@^6.0.1"]。这可能会导致不确定的行为,跳过。"。

所以我猜测在全新安装时会安装一个版本的 strip-ansi,然后安装不同的版本,因此为了具有确定性的行为,我添加了我们收到警告的依赖项,因为我们在package.json 及其最新版本。

© www.soinside.com 2019 - 2024. All rights reserved.