socket.io - 无法安装

时间:2015-07-15 07:08:05

标签: node.js sockets

我必须在公司网络中安装socket.io。请在下面找到.npmrc中设置的值。

proxy = http://xxx.xx.xx.xxx:8080
https-proxy = http://xxx.xx.xx.xxx:8080
registry = http://registry.npmjs.org/
strict-ssl = false

我已使用相同的设置安装了expressgruntbower。当我执行npm install socket.io时,我遇到了错误。

npm ERR! fetch failed https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f
2.tar.gz
npm http GET https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz
npm ERR! fetch failed https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f
2.tar.gz
unbuild engine.io-client@1.5.2
unbuild socket.io-client@1.3.6
unbuild socket.io@1.3.6
npm ERR! Error: tunneling socket could not be established, cause=Parse Error
npm ERR!     at ClientRequest.onError (C:\Program Files\nodejs\node_modules\npm\
node_modules\request\node_modules\tunnel-agent\index.js:159:17)
npm ERR!     at ClientRequest.g (events.js:175:14)
npm ERR!     at ClientRequest.EventEmitter.emit (events.js:95:17)
npm ERR!     at Socket.socketOnData (http.js:1569:9)
npm ERR!     at TCP.onread (net.js:525:27)
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "socket.io"
npm ERR! cwd C:\Users\xxx\Socket_POC
npm ERR! node -v v0.10.13
npm ERR! npm -v 1.3.2
npm ERR! code ECONNRESET
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\xxx\Socket_POC\npm-debug.log
npm ERR! not ok code 0

我无法弄清楚为什么要github来获取数据。 我仍尝试使用index.jsnode的代码运行并收到错误:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

/*app.get('/', function(req, res){
  res.send('<h1>Hello world</h1>');
});*/

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

错误:

module.js:340
    throw err;
          ^
Error: Cannot find module 'engine.io'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\Users\xxx\node_modules\socket.io\lib\index.js
:9:14)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

即使我安装了engine.io,但仍然无法安装socket.io

如何使用socket.io安装???

解决此问题

2 个答案:

答案 0 :(得分:2)

engine.io-client,一个依赖项,正在提取version directly from github.com XMLHttpRequest R.chain而不是npm注册表。您的公司代理是否阻止您在github上下载内容?

如果是这样,在合并并将XMLHttpRequest的此分支推送到npm注册表之前,您将无法安装。

答案 1 :(得分:0)

我认为这是一个老问题,但我偶然发现了同样的事情。

如果你真的需要使用这个版本的socket.io(更新socket.io只会解决它,因为它使用较新版本的engine.io-client)。

有一种方法可以覆盖内部依赖关系。您可以使用npm shrinkwrap。 您定义了名为npm-shrinkwrap.json的文件,并在内部定义您的依赖项(在您的情况下为socket.io)使用不同的内部依赖项(在您的情况下为engine.io-client)。

{
  "name": "<your_package>",
  "version": "<your_package_version>",
  "dependencies": {
    "socket.io": {
      "version": "1.5.2", 
      "from": "socket.io@1.5.2",
      "dependencies": {
        "engine.io-client": {
          "version": "1.6.4", //this one does not have issue with external download
          "from": "engine.io-client@1.6.4"
        }
      }
    }
  }
}

另外,请确保在package.json中放入

“engine.io-client”:1.6.4