无法安装与互联网断开连接的Socket.IO

我需要在没有互联网访问的机器上安装Socket.io。

我已经下载Node.js和Socket.IO在另一个盒子上,但是当我复制并试图将它们安装在孤立的机器上时,Node.js安装正常,但Socket.IO坚持连接到github上…

如何在没有networking连接的情况下安装Socket.IO? 我应该离线安装所有的依赖吗? 在这种情况下,哪个是Socket.IO的依赖?

TIA,巴西Nilo

事实certificate,npm支持包caching。 基本上,您可以在开发机器上创build一个caching,该caching可以访问互联网,在安装nodejs应用程序的同时将caching复制到目标上,然后从caching中安装软件包。 我从你的问题中假设目标机器已经安装了nodejs和npm。

第1步。使用npm在您的开发机器上创buildcaching目录

首先,创build一个caching目录并configurationnpm来使用它。 然后安装你的每个软件包。

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目录,您将看到每个已安装软件包的子目录。

第2步。将caching与您的节点应用程序一起复制到目标机器

这里没有火箭科学:确保将my-cache目录复制到目标机器上。

第3步。使用npm从caching中安装软件包

configurationnpm以使用caching目录。 请注意,npm仍然会尝试从互联网上获取包文件。 它会在失败后重试。 我发现一些强制npm使用caching的build议,但是这些选项不起作用。 但是我确实find了一种方法来显着减lessnpm在查看caching之前花费的时间。

 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 

请注意,您不能只inputnpm install因为npm不会使用caching。 这有点痛苦。 如果你想要一个健壮的安装,你可以编写一个小的nodejs应用程序来parsing依赖关系,并调用child_process.exec来安装每一个。


(*)我应该提到有一个名为npm-cache的包( https://www.npmjs.com/package/npm-cache )。 在我的情况下,npm-cache并不适合我的需求。 但是,你可能能够为你工作。