正在离线安装 node-gyp

Installing node-gyp offline

node-gyp 有数百万个关于离线安装问题的线程,但是,none 的解决方案对我有用。
我实际上正在尝试安装 node-sass-chokidar,这取决于 node-sass,因此取决于此包。我正在研究 Ubuntu 16.04.
由于电脑不在线,没法放完整日志,总之:

...
gyp info using node@8.9.4 | linux | x64
...
gyp verb get node dir no --target version specified, falling back to hot node version: 8.9.4
...
gyp verb install version is no good; reinstalling
gyp verb ensuring nodedir is created /home/user/.node-gyp/8.9.4
gyp http GET https://node.js.org/download/release/v.8.9.4/node-v8.9.4-headers.tar.gz
...
gyp ERR! stack Error: This is most likely not a problem with node-gyp or the package itself and
gyp ERR! stack is related to network connectivity. In most cases you are behind a proxy...
...

我已经手动下载了以上headers个文件,但我似乎无法使用它们。
我尝试提取 headers,然后提取 yarn add node-sass-chokidar --nodedir /path/to/headers,但没有成功。
我还尝试了 headers 的确切路径(它们嵌套在 include/node/....
内的下载目录中 我尝试的另一件事是将 headers 放在 $HOME/.node-gyp/8.9.4 中,但也失败了。

我想知道我是否需要为 --nodedir 路径下载整个 node 源代码,但是,我认为为未成年人做这样的事情是不合理的 sass构建器库...感觉很疯狂。
我究竟做错了什么?无论我做什么,图书馆都会尝试访问互联网,但无法使用我下载的 headers。

可悲的是,我错过了 installVersion 文件,该文件不存在于 headers 下载中。
一旦我将 headers 提取到 ~/.node-gyp 并添加了一个包含 9installVersion 文件,安装就成功了。

由于防火墙限制,我在尝试设置无法访问互联网的 Ubuntu 服务器时遇到了同样的问题。 node-gyp 出于某种原因试图在其本地缓存下寻找 node-headers,如果没有互联网访问,它会自动失败。这是我所做的:

为 node-gyp 设置节点 headers:

  • 获取节点 headers 文件: curl -O https://nodejs.org/dist/v14.17.3/node-v14.17.3-headers.tar.gz (确保您拥有合适的正确节点版本,并且您需要一台联网的机器)
  • 将headertarball复制到离线机器(方法可能因您的情况而异,例如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(如果您可以上网,通常会自动创建)