npm安装抛出错误错误:协议无效

时间:2014-01-21 21:03:46

标签: node.js

您好我是Node JS的新手,我正在尝试按照本书中的示例进行操作,当尝试执行npm安装时,我收到以下错误:

任何帮助都将受到高度赞赏

 C:\Developer\NODE_JS>npm install
    npm WARN package.json chatrooms@0.0.1 No repository field.
    npm WARN package.json chatrooms@0.0.1 No README data
    npm http GET http://registry.npmjs.org/socket.io
    npm http GET http://registry.npmjs.org/mime
    npm http GET http://registry.npmjs.org/socket.io
    npm http GET http://registry.npmjs.org/mime
    npm http GET http://registry.npmjs.org/socket.io
    npm http GET http://registry.npmjs.org/mime
    npm ERR! Error: Invalid protocol
    npm ERR!     at Request.init (C:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:335:51)
    npm ERR!     at new Request (C:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:99:8)
    npm ERR!     at request (C:\Program Files\nodejs\node_modules\npm\node_modules\request\index.js:55:11)
    npm ERR!     at RegClient.makeRequest (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:211:13)
    npm ERR!     at RegClient.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:117:17)
    npm ERR!     at null._onTimeout (C:\Program Files\nodejs\node_modules\npm\node_modules\retry\lib\retry_operation.js:32:10)
    npm ERR!     at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
    npm ERR! If you need help, you may report this *entire* log,
    npm ERR! including the npm and node versions, at:
    npm ERR!     <http://github.com/isaacs/npm/issues>

    npm ERR! System Windows_NT 6.1.7601
    npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
    npm ERR! cwd C:\Developer\NODE_JS
    npm ERR! node -v v0.10.24
    npm ERR! npm -v 1.3.21
    npm ERR!
    npm ERR! Additional logging details can be found in:
    npm ERR!     C:\Developer\NODE_JS\npm-debug.log
    npm ERR! not ok code 0

我的节点js配置是

C:\Developer\NODE_JS>npm config list
; cli configs
registry = "http://registry.npmjs.org/"

; userconfig C:\Users\<uname>\.npmrc
https-proxy = "proxy.<comp>.com:8080"
proxy = "proxy.<comp>.com:8080"
registry = "http://registry.npmjs.org/"

; builtin config undefined
prefix = "C:\\Users\\puppalap\\AppData\\Roaming\\npm"

; node bin location = C:\Program Files\nodejs\\node.exe
; cwd = C:\Developer\NODE_JS
; HOME = C:\Users\<uname>
; 'npm config ls -l' to show all defaults.

4 个答案:

答案 0 :(得分:5)

我设置了以下两个属性后问题得到了解决:

npm config set proxy http://usr:pwd@host:port
npm config set https-proxy http://usr:pwd@host:port

答案 1 :(得分:0)

问题是由于windows http_proxy环境变量被设置;虽然我不使用代理。

如果设置了http_proxy,将显示命令提示符中的以下命令;

set http

如果设置已使用以下命令删除变量并且问题已解决。

set http_proxy=
  

上面的命令将从当前删除http_proxy   命令行。但是,如果您需要永久删除它,只需   从系统属性&gt;高级选项卡&gt;环境变量中删除它   对话框。

答案 2 :(得分:0)

只想分享一种方法,按照我的方式来解决它,

  

我的错误:是ERR!错误:无效的协议:myusername:

[前一个代理的用户名]

我的.npmrc文件 包含registry =&#34; http://registry.npmjs.org/" 和其他变量[prefix,cwd,home]

由于我不在代理后面,因此删除了代理变量 仍然有同样的错误

  

调查时   request.js [/usr/lib/node_modules/npm/node_modules/request/request.js]   文件它使用旧的代理值

因此,我在request.js

的init()中添加了这一行
self.proxy="http://registry.npmjs.org/" //at the start of method

然后它开始工作!!!

PS:安装命令后,删除此行并继续工作。 如果没有其他选项正常工作,请尝试此操作

答案 3 :(得分:0)

如果你在Linux机上,请确保设置以下变量:

export http_proxy="http://yourCompanyProxy:portNumber"
export https_proxy="http://yourCompanyProxy:portNumber"
export HTTP_PROXY="http://yourCompanyProxy:portNumber"
export HTTPS_PROXY="http://yourCompanyProxy:portNumber"