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的主要内容,如果未能解决你的问题,请参考以下文章