node.js - NPM 未知协议(protocol)

标签 node.js npm npm-install

当我运行npm install时,出现以下错误。好像无法下载任何包。我使用 Node 8.2.1 和 npm 5.3.0

你知道出了什么问题吗?

npm ERR! code EPROTO
npm ERR! errno EPROTO
npm ERR! request to https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz failed,
reason: write EPROTO 140640770651968:error:140770FC:SSL 
routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:797:

npm 日志:

0215 verbose type system
20216 verbose stack FetchError: request to https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz failed, reason: write EPROTO 140640770651968:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:797:
20216 verbose stack
20216 verbose stack     at ClientRequest.req.on.err (/home/pawel/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/node-fetch-npm/src/index.js:68:14)
20216 verbose stack     at emitOne (events.js:115:13)
20216 verbose stack     at ClientRequest.emit (events.js:210:7)
20216 verbose stack     at onerror (/home/pawel/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent/node_modules/agent-base/index.js:106:9)
20216 verbose stack     at callbackError (/home/pawel/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/https-proxy-agent/node_modules/agent-base/index.js:126:5)
20216 verbose stack     at <anonymous>
20217 verbose cwd /home/pawel/work/react-components
20218 verbose Linux 4.4.0-83-generic
20219 verbose argv "/home/pawel/.nvm/versions/node/v8.2.1/bin/node" "/home/pawel/.nvm/versions/node/v8.2.1/bin/npm" "install"
20220 verbose node v8.2.1
20221 verbose npm  v5.3.0
20222 error code EPROTO
20223 error errno EPROTO
20224 error request to https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz failed, reason: write EPROTO 140640770651968:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:797:
20225 verbose exit [ 1, true ]

最佳答案

我也遇到这个问题了。以下技巧对我有用。

如果您将 nodenpm 版本升级到最新版本会更好。之后,请按照以下步骤操作。

尝试从终端运行 curl https://registry.npmjs.org/package-name 以确保网络调用不会阻止对 npm 的包请求注册表。

如果您在代理后面运行,那么您还必须配置npm才能使用它,并且可以使用以下方式设置它:

npm 配置设置代理 http://proxyhost:proxyport

npm 配置设置 http-proxy http://proxyhost:proxyport

npm 配置设置 https-proxy http://proxyhost:proxyport

npm 配置集注册表 http://registry.npmjs.org/

希望以上技巧能解决您的问题。

关于node.js - NPM 未知协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547306/

相关文章:

node.js - 在 webpack 中使用 moment-timezone

javascript - 将变量写入缓冲区

javascript - NPM 安装失败并出现 node-gyp

javascript - 仅当所有 ava 测试都通过时才运行命令

node.js - 添加新的 save-dev 依赖项后如何让 npm 5 更新锁定文件?

node.js - 使用 marklogic Nodejs API 阅读大型文档

javascript - 找不到 npm 错误 404

Angular2 - npm install 没有找到命名空间 webdriver

当包具有公共(public)依赖项时,私有(private)包的 npm 安装失败

javascript - 将单独 JS 文件中的项目迭代添加到行中的 HTML/EJS 表中 - 使用 NodeJS