NPM 恢复尝试检索不存在的 node-sass

Posted

技术标签:

【中文标题】NPM 恢复尝试检索不存在的 node-sass【英文标题】:NPM restore attempting to retrieve non-existent node-sass 【发布时间】:2021-08-19 21:23:33 【问题描述】:

我试图了解 NPM 是如何提出这个特定的不存在的 URL 来检索 node-sass。

我的 package.json 包括:

  "dependencies": 
    "node-sass": "<=4.5.3",
    "request": "<=2.81.0",
    "shrinkwrap": "^0.4.0"
  ,

从 VS2019 开始,我对 package.json 执行恢复。它尝试安装的第一件事是 node-sass,但它会生成一个对不存在的发布资产的请求:

> node-sass@4.5.3 install C:\Dev\LegacyProject\Dev\LegacyProject.Web\node_modules\node-sass
> node scripts/install.js
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.5.3/win32-x64-72_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.5.3/win32-x64-72_binding.node": 
HTTP error 404 Not Found

此版本存在,但在该版本的资产中,此版本没有带有“-72”的资产:win32-x64-72_binding.node : https://github.com/sass/node-sass/releases/tag/v4.5.3

这个“-72”在资产命名约定中指定了什么?为什么要尝试安装不存在的发布资产?换句话说,它是如何得出这个特定 URL 的?

【问题讨论】:

Per github.com/sass/node-sass#node-version-support-policy 72 表示节点 12,v4.5.3 不支持(或至少不提供预编译的二进制文件)。如果您想继续使用该版本的 node-sass,您需要使用 Node 8(根据 nodejs.org/en/about/releases,它不支持 LTS)或自己构建。 @jonrsharpe 谢谢,如果你发布为答案,我会标记。 这能回答你的问题吗? Cannot download node-sass HTTP error 404 Not found --- Node Gyp error 某种程度上,他们确实声明包版本不支持他们的节点版本。但我认为文件名的“-72”部分是从您的本地节点版本生成的解释是一个有用的故障排除信息,它解释了看似无意义的 URL。 【参考方案1】:

-72 之类的后缀与构建该二进制文件的 节点版本 相关,例如https://github.com/sass/node-sass#node-version-support-policy:

NodeJS Supported node-sass version Node Module
Node 16 6.0+ 93
Node 15 5.0+ 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+, <6.0 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57

如果它试图下载-72,您可能使用的是Node 12,它没有node-sass@4.5.3 的预编译二进制文件。

您可以查看更多关于此节点模块版本的信息,例如https://nodejs.org/en/download/releases/,上面写着:

NODE_MODULE_VERSION指的是ABI(应用程序二进制接口) Node.js 的版本号,用于确定 Node.js 的哪些版本 编译后的 C++ 附加二进制文件无需加载即可 重新编译。它曾经在早期版本中存储为十六进制值, 但现在表示为整数。

【讨论】:

以上是关于NPM 恢复尝试检索不存在的 node-sass的主要内容,如果未能解决你的问题,请参考以下文章

NPM node-sass 安装失败

为啥 NPM 安装安装旧版本的 node-sass

配置npm转到淘宝镜像

Node-sass 不在 npm 脚本中使用管道

npm install node-sass失败

关于npm和yarn安装node-sass失败并且依旧想使用NPM或者yarn的完美解决方案