Vol*_*lyy 11 node.js npm node-gyp
node-gyp在安装和构建本机模块(如iconv,ref,ffi等)时从Internet下载以下文件:
https://nodejs.org/download/release/v6.10.0/node-v6.10.0-headers. tar.gz
https://nodejs.org/download/release/v6.10.0/win-x86/node.lib
https://nodejs.org/download/release/v6.10.0/win-x64/node.lib
https ://nodejs.org/download/release/v6.10.0/SHASUMS256.txt
如何让node-gyp从本地文件夹而不是从Internet使用这些文件?
我找到了以下解决方案:
1.下载https://nodejs.org/download/release/v6.10.0/node-v6.10.0-headers.tar.gz
2.将其解压缩到某个本地文件夹.
3.在此本地文件夹中创建文件夹发布.
4.将文件https://nodejs.org/dist/v6.10.0/win-x64/node.lib下载到文件夹Release中.
5.在.npmrc中设置属性nodedir,它将指向包含解压缩标头的文件夹:
nodedir = D:\ tools \node_src \node-v6.10.0-headers
现在npm安装包和node-gyp构建本机包,而无需从Internet下载节点头和库.
这是一种正确的方法吗?
我在文档中找不到我应该下载node.lib并将其放到Release目录中.
在分析了node-gyp的跟踪和node-gyp的代码后,我决定这样做.
是否可以使用一些npm_config_xxx属性设置node.lib的位置?
Pat*_*ari 12
对于那些在Windows上运行的人来说,where--tarball是无用的,因为node-gyp随后想要下载node.lib文件......
这是我的解决方案,希望能帮助其他陷入公司障碍的人。我使用 v16.2.0 作为示例,因此请更换为合适的节点版本。
创建一个您愿意存放 16.2.0 数据的文件夹,并使用终端命令指向它。我选择了%USERPROFILE%\.node-gyp\16.2.0。不一定要在.node-gyp.
在该文件夹中创建两个子文件夹:Release和src。
下载: https: //nodejs.org/download/release/v16.2.0/win-x64/node.lib和https://nodejs.org/download/release/v16.2.0/node-v16.2.0-headers。压缩包
放入子文件夹node.lib中Release。
打开 headers.tar.gz 文件。我用的是7zip。进入 tar 后,导航到 include/node。
将这两个.gypi文件提取到您的基本文件夹中。
将其他所有内容提取到src子文件夹中。
使用--nodedir=%USERPROFILE%\.node-gyp\16.2.0(或您的等效文件夹,如果您与我不同)运行
以下对我有用:
# download for private repo, probably you're behind firewall
curl -k -o node-v8.9.4-headers.tar.gz -L https://nexus.com/repository/binaries/node/v8.9.4/node-v8.9.4-headers.tar.gz
# capture the absolute path
TARBALL_PATH=$(pwd)
# configure tarball in npm config
npm config set tarball ${TARBALL_PATH}/node-v8.9.4-headers.tar.gz
# The below command should pass without gyp error
npm install
Run Code Online (Sandbox Code Playgroud)
小智 4
正如这里所建议的,您可以使用 node-gyp 的 --tarball 选项 https://github.com/nodejs/node-gyp/issues/1133
| 归档时间: |
|
| 查看次数: |
6244 次 |
| 最近记录: |