Nodejs Jul 10, 今天 Grunt 无法正常安装

Nodejs Jul 10, 今天 Grunt 无法正常安装

https://github.com/gruntjs/grunt/pull/836 https://twitter.com/armetiz/status/354893655825326080 具体看两个链接, 大概是 underscore.string 作者怎么改了版本号的原因 然后 Grunt 无法正常安装了… 我还是安装 spm-build 时候遇到的 然后发现一个不到一个小时的 Issue 上瞬间出现了一堆的 +1 后面怎么说… 维护仓库的大神还没起床?? 总之稀奇古怪的 NPM 上的数据 grunt 前一天 6 769 次下载, underscore.string 则是 14 753 次 看来影响到的人不会少了… 坐等大神起床解释 吐槽下 NPM 这也太危险了吧


2 回复

Node.js Jul 10, 今天 Grunt 无法正常安装

最近在尝试安装 Grunt 时遇到了一些问题。经过调查,我发现这个问题与 underscore.string 的版本更新有关。具体来说,underscore.string 的作者更改了版本号,这导致 Grunt 在安装过程中无法正确地找到并安装依赖项。

问题描述

我是在安装 spm-build 时遇到的这个问题。查看相关的 GitHub issue 和 Twitter 帖子后,我发现这是一个由于 underscore.string 版本更新引起的连锁反应。具体来说:

这两个链接中提到,underscore.string 的作者修改了其版本号,导致 Grunt 无法正常安装。这个 issue 在不到一个小时的时间里收到了大量的 “+1” 反馈,显示了许多开发者都遇到了相同的问题。

影响范围

根据 NPM 的数据,grunt 在前一天有大约 6,769 次下载,而 underscore.string 则有 14,753 次下载。这意味着这一问题可能已经影响到了相当数量的用户。当前看来,维护 Grunt 仓库的大神还未起床处理这个问题。

解决方案

为了暂时解决这个问题,你可以尝试手动指定 underscore.string 的版本。例如,在你的 package.json 文件中,可以添加如下内容:

{
  "dependencies": {
    "grunt": "^1.0.1",
    "underscore.string": "~3.3.4"
  }
}

这里指定了 underscore.string 的版本为 ~3.3.4,确保它与 Grunt 兼容。接下来,运行 npm install 来重新安装依赖项。

结论

尽管 NPM 在这种情况下显得有些脆弱,但通过手动指定依赖版本,我们可以暂时绕过这个问题。希望维护 Grunt 的团队能够尽快解决这一问题,并提供更稳定的解决方案。


希望这个回答能帮助你解决当前的问题。如果还有其他问题或需要进一步的帮助,请随时告诉我!


根据你提供的信息,看起来问题是因为 underscore.string 的版本号变更导致了 Grunt 安装失败。Grunt 和其依赖项的版本兼容性问题会导致这样的错误。为了解决这个问题,你可以尝试以下几种方法:

方法一:使用 npmresolutions 参数

如果你使用的是 Yarn 包管理器,可以尝试使用 resolutions 参数来强制指定 underscore.string 的版本。

yarn add grunt --resolutions=underscore.string@<version>

例如,假设你需要 underscore.string 版本 3.2.3

yarn add grunt --resolutions=underscore.string@3.2.3

方法二:手动更新 package.json

如果你直接使用 npm,可以手动修改 package.json 文件,将 underscore.string 的版本号指定为你需要的版本,例如 3.2.3

{
  "dependencies": {
    "grunt": "^1.0.3",
    "underscore.string": "3.2.3"
  }
}

然后运行:

npm install

方法三:使用特定版本的 Grunt

如果特定版本的 Grunt 已经修复了该问题,可以尝试使用已知稳定或修复了此问题的版本:

npm install grunt@1.0.4

示例代码

假设你已经创建了一个 package.json 文件,并且想要确保 underscore.string 的版本为 3.2.3,可以这样修改:

{
  "name": "your-project-name",
  "version": "1.0.0",
  "dependencies": {
    "grunt": "^1.0.3",
    "underscore.string": "3.2.3"
  }
}

然后执行 npm install 来安装依赖。

通过以上方法,你应该能够解决由于 underscore.string 版本变更导致的 Grunt 安装问题。

回到顶部