无法安装从Internet断开连接的Socket.IO

时间:2015-10-29 11:20:02

标签: node.js socket.io

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

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

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

TIA, Nilo,巴西

1 个答案:

答案 0 :(得分:1)

事实证明,npm支持包缓存。基本上,您在 可以访问Internet的开发计算机上创建缓存,在安装nodejs应用程序的同时将缓存复制到目标上,然后从缓存中安装软件包。我从你的问题中假设目标机器已经安装了nodejs和npm。

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

步骤2.将缓存与节点应用程序一起复制到目标计算机

此处没有火箭科学:请确保将my-cache目录复制到目标计算机。

步骤3.使用npm从缓存中安装软件包

配置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不符合我的需求。但是你可以让它适合你。