如何告诉 node-gyp / node-sass 我已经有了我的 node-headers?

How to tell node-gyp / node-sass that I already have my node-headers?

我目前在不允许我执行此命令的 HTTP GET 请求阶段的代理后面工作:

node node-sass/scripts/build.js

请求阶段:

gyp http GET https://nodejs.org/download/release/v10.8.0/node-v10.8.0-headers.tar.gz
gyp WARN install got an error, rolling back install

如前所述,我在本地下载了那些 headers(尤其是 mentioned-in-the-log 压缩包)。我如何告诉 node-sass 我在本地有我的文件?我试着直接查看 build.js,但我无法做到我想做的;这可能超出了我的水平。

好的,所以我设法做到了。我只需要解压 tarball,并在我的 .yarnrc 中将 nodedir 配置指向解压创建的文件夹。 所以:

tar -xzvf your_headers_package
yarn config set nodedir your_headers_folder

这对我有用。我觉得……现在很蠢。

对于那些试图在无法访问互联网的情况下设置 node-gyp 的人:

  • 获取节点 headers 文件: curl -O https://nodejs.org/dist/v14.17.3/node-v14.17.3-headers.tar.gz (确保你有合适的正确节点版本,并且你需要一台联网的机器)
  • 复制headertar球到离线机器(方法可能因您的情况而异,例如winscp到vm)
  • 创建库查找的 node-gyp 文件夹(如果尚不存在)mkdir -p ~/.cache/node-gyp/14.17.3(陷阱:在某些版本中 node-gyp文件夹在 ~/.node-gyp)
  • tar 文件到 node-gyp 文件夹: tar -xf node-v14.17.3-headers.tar.gz --directory ~/.cache/.node-gyp/6.10.1/ --strip-components 1 (确保你在这里有正确的版本)
  • 手动创建installVersionecho 9 >~/.node-gyp/6.10.1/installVersion(如果您可以上网,通常会自动创建)