我必须在公司网络中安装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
我已使用相同的设置安装了express
,grunt
和bower
。当我执行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.js
以node
的代码运行并收到错误:
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
安装???
答案 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