【问题标题】:Why does my project fails after 6 months of inactivity, even though it has a yarn.lock file?为什么我的项目在 6 个月不活动后会失败,即使它有一个 yarn.lock 文件?
【发布时间】:2020-09-23 12:10:34
【问题描述】:

我有一个部署到 heroku 的节点项目。 6 个月后,我决定为其添加一个新功能。

当我在本地拉取代码并运行yarn install 时,它工作正常,但是当我构建项目时,由于依赖项中的某种错误而失败。

我还注意到,如果我在 heroku 中手动触发构建(它将尝试构建与 6 个月前发布的相同代码库),它也会因同样的问题而失败。

这显然是一个依赖问题,因为我的代码根本没有改变。

我有yarn.lock 文件,所以我不明白什么会导致一个没有改变的项目突然停止工作。锁的重点不就是把所有依赖的所有版本都锁进去吗?

【问题讨论】:

  • 试试,删除node_modules文件夹,重新安装!
  • 我克隆了代码库,没有一个 node_modules 文件夹开始
  • 好的。然后删除 yarn.lock 并尝试安装包。
  • 删除锁文件,将重新生成锁文件,这将导致新的依赖被拉入,一些将变得不兼容。 :(
  • 获取两个 git clone 的 repo,并对其中一个 repo 进行更改以测试导致此中断的原因。

标签: node.js npm frontend yarnpkg yarn-workspaces


【解决方案1】:

如果其他人正在挖掘一个旧项目并且它似乎不再起作用。以下是对我造成构建问题的原因的一些见解:

在我的package.json 中,我有这个:

"engines": {
   "node": "v12.x",   
   "yarn": "1.22.x"
},

这在大多数情况下都可以,因为您通常仍希望获取任何次要更新和补丁(尤其是安全更新)

但是,如果对 node 的这些更新破坏了在以前版本的 node.在完美的世界中,次要更新和补丁不应该破坏任何依赖,因为这些不应该是破坏性更改。但它可能由于各种原因发生(例如,一个依赖项错误地使用了一个 API;后来当 API 被修复时,依赖项中断了)

总结:

最初 Heroku 正在拉动 Node v12.16.1,我的项目运行良好。 6 个月后,在进行构建时,Heroku 引入了 Node 12.18.4。这在技术上仍然是正确的,因为我只是要求v12.x

v12.16.112.18.4 之间的某个地方,我的一个依赖项抛出并出错。

解决方案: 在package.jsonengines 部分中输入您需要的确切版本号。

【讨论】:

    猜你喜欢
    • 2020-10-06
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多