我需要在没有互联网访问权限的机器上安装Socket.io。
我已经在另一个盒子上下载了Node.js和Socket.IO,但是当我复制并尝试在隔离的机器上安装它们时,Node.js安装正常,但Socket.IO坚持连接到github。 ..
如何在没有互联网连接的情况下安装Socket.IO?我应该离线安装所有依赖项吗?在这种情况下,哪些是Socket.IO的依赖?
TIA, Nilo,巴西
答案 0 :(得分:1)
事实证明,npm支持包缓存。基本上,您在 可以访问Internet的开发计算机上创建缓存,在安装nodejs应用程序的同时将缓存复制到目标上,然后从缓存中安装软件包。我从你的问题中假设目标机器已经安装了nodejs和npm。
首先,创建一个缓存目录并配置npm以使用它。然后安装每个软件包。
mkdir ../my-cache
npm config set cache ../my-cache
npm install --save async@0.9.0
npm install --save restify@2.8.3
etc.
如果您查看my-cache
目录,您将看到每个已安装软件包的子目录。
此处没有火箭科学:请确保将my-cache
目录复制到目标计算机。
配置npm以使用缓存目录。请注意,npm仍会尝试从互联网上获取包文件。它会在失败后重试。我找到了一些强制npm使用缓存的建议,但这些选项不起作用。但我确实找到了一种方法来显着减少npm在查看缓存之前尝试获取的时间。
npm config set cache ../my-cache
npm config set fetch-retries 1
npm config set fetch-retry-maxtimeout 1
npm config set fetch-retry-mintimeout 1
npm install async@0.9.0
npm install restify@2.8.3
请注意,您不能只键入npm install
,因为npm不会使用缓存。这有点痛苦。如果你想要一个健壮的安装,你可以编写一个小的nodejs应用程序来解析依赖关系并调用child_process.exec
来安装每个。
(*)我应该提一下名为npm-cache(https://www.npmjs.com/package/npm-cache)的软件包。就我而言,npm-cache不符合我的需求。但是你可以让它适合你。