运行npm install时出现ENOTFOUND错误

4
我正在尝试安装一个项目的依赖项,该项目有一个project.json文件:
{
  "name": "Pizza",
  "version": "1.0.0",
  "description": "NIT Project",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "TheSmokingGnu",
  "license": "ISC",
  "dependencies": {
    "basil.js": "^0.4.3",
    "brfs": "^1.4.3",
    "ejs": "^2.4.1",
    "grunt": "^0.4.5",
    "grunt-browserify": "^4.0.1",
    "grunt-contrib-watch": "^0.6.1"
  }
}

我只需进入目录(或使用WebStorm的控制台),然后运行npm install:

npm install
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to http://registry.npmjs.org/ejs failed, reason: getaddrinfo ENOTFOUND ip ip:80
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help 

我正在使用刚安装的Windows 10操作系统,系统防火墙已关闭。我没有打算使用代理,我的配置列表如下:

>npm config list
; cli configs
metrics-registry = "http://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.5.1 node/v8.9.1 win32 x64"

; userconfig C:\Users\taras\.npmrc
http-proxy = "http://username:password@ip:port"
https-proxy = "http://username:password@ip/:port"
registry = "http://registry.npmjs.org/"
strict-ssl = false

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

; node bin location = C:\Program Files\nodejs\node.exe
; cwd = D:\Downloads\JS-Pizza-master\JS-Pizza-master
; HOME = C:\Users\taras
; "npm config ls -l" to show all defaults.

最后,这是我的错误日志:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install' ]
2 info using npm@5.5.1
3 info using node@v8.9.1
4 verbose npm-session 9d19f4920a39031f
5 silly install runPreinstallTopLevelLifecycles
6 silly preinstall Pizza@1.0.0
7 info lifecycle Pizza@1.0.0~preinstall: Pizza@1.0.0
8 silly install loadCurrentTree
9 silly install readLocalPackageData
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 silly install loadShrinkwrap
13 silly install loadAllDepsIntoIdealTree
14 silly fetchPackageMetaData error for grunt@^0.4.5 request to http://registry.npmjs.org/grunt failed, reason: getaddrinfo ENOTFOUND ip ip:80
15 silly fetchPackageMetaData error for ejs@^2.4.1 request to http://registry.npmjs.org/ejs failed, reason: getaddrinfo ENOTFOUND ip ip:80
16 silly fetchPackageMetaData error for brfs@^1.4.3 request to http://registry.npmjs.org/brfs failed, reason: getaddrinfo ENOTFOUND ip ip:80
17 silly fetchPackageMetaData error for basil.js@^0.4.3 request to http://registry.npmjs.org/basil.js failed, reason: getaddrinfo ENOTFOUND ip ip:80
18 silly fetchPackageMetaData error for grunt-contrib-watch@^0.6.1 request to http://registry.npmjs.org/grunt-contrib-watch failed, reason: getaddrinfo ENOTFOUND ip ip:80
19 silly fetchPackageMetaData error for grunt-browserify@^4.0.1 request to http://registry.npmjs.org/grunt-browserify failed, reason: getaddrinfo ENOTFOUND ip ip:80
20 silly fetchPackageMetaData error for basil.js@^0.4.3 request to http://registry.npmjs.org/basil.js failed, reason: getaddrinfo ENOTFOUND ip ip:80
21 silly fetchPackageMetaData error for brfs@^1.4.3 request to http://registry.npmjs.org/brfs failed, reason: getaddrinfo ENOTFOUND ip ip:80
22 silly fetchPackageMetaData error for ejs@^2.4.1 request to http://registry.npmjs.org/ejs failed, reason: getaddrinfo ENOTFOUND ip ip:80
23 silly fetchPackageMetaData error for grunt@^0.4.5 request to http://registry.npmjs.org/grunt failed, reason: getaddrinfo ENOTFOUND ip ip:80
24 silly fetchPackageMetaData error for grunt-browserify@^4.0.1 request to http://registry.npmjs.org/grunt-browserify failed, reason: getaddrinfo ENOTFOUND ip ip:80
25 silly fetchPackageMetaData error for grunt-contrib-watch@^0.6.1 request to http://registry.npmjs.org/grunt-contrib-watch failed, reason: getaddrinfo ENOTFOUND ip ip:80
26 verbose type system
27 verbose stack FetchError: request to http://registry.npmjs.org/basil.js failed, reason: getaddrinfo ENOTFOUND ip ip:80
27 verbose stack     at ClientRequest.req.on.err (C:\Program Files\nodejs\node_modules\npm\node_modules\pacote\node_modules\make-fetch-happen\node_modules\node-fetch-npm\src\index.js:68:14)
27 verbose stack     at emitOne (events.js:116:13)
27 verbose stack     at ClientRequest.emit (events.js:211:7)
27 verbose stack     at Socket.socketErrorListener (_http_client.js:387:9)
27 verbose stack     at emitOne (events.js:116:13)
27 verbose stack     at Socket.emit (events.js:211:7)
27 verbose stack     at emitErrorNT (internal/streams/destroy.js:64:8)
27 verbose stack     at _combinedTickCallback (internal/process/next_tick.js:138:11)
27 verbose stack     at process._tickCallback (internal/process/next_tick.js:180:9)
28 verbose cwd D:\Downloads\JS-Pizza-master\JS-Pizza-master
29 verbose Windows_NT 10.0.16299
30 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
31 verbose node v8.9.1
32 verbose npm  v5.5.1
33 error code ENOTFOUND
34 error errno ENOTFOUND
35 error network request to http://registry.npmjs.org/basil.js failed, reason: getaddrinfo ENOTFOUND ip ip:80
36 error network This is a problem related to network connectivity.
36 error network In most cases you are behind a proxy or have bad network settings.
36 error network
36 error network If you are behind a proxy, please make sure that the
36 error network 'proxy' config is set properly.  See: 'npm help config'
37 verbose exit [ 1, true ]

1
你的用户配置文件对我来说看起来有点奇怪(如果您不想使用代理):http-proxy:“http://username:password@ip:port”。 作为快速测试,我建议删除 C:\Users\taras.npmrc 文件(或只需重命名为 ignore.npmrc),然后重新运行 npm install - Konstantin A. Magg
谢谢,那很有帮助。我记得运行了一个设置代理的命令,但是在那之后我已经卸载了node和npm。看来这些设置还留存着。 - TheSmokingGnu
好的。如果我添加了一个答案,你能把它标记为“已接受”吗? - Konstantin A. Magg
3个回答

5

您的用户配置文件似乎配置了某种代理:

; userconfig C:\Users\taras\.npmrc
http-proxy = "http://username:password@ip:port"
https-proxy = "http://username:password@ip/:port"
registry = "http://registry.npmjs.org/"
strict-ssl = false

如果您不打算使用代理,我建议删除C:\Users\taras.npmrc文件并重新运行npm install命令。
更新:由于配置文件存储在用户目录中,因此在更新npm等操作时不会更改。

@Ali 如果你需要关于错误的支持,请花时间发布一个完整的问题,告诉我们你想要做什么以及哪些方面出现了问题。在SO上有很多人可以为你提供支持 ;) - Konstantin A. Magg
我正在尝试运行npm install,但是出现了ENOTFOUND错误,我不知道http-proxy需要放什么值,我已经检查过没有配置代理,那么我该如何获取这些值呢? - Ali

1
也许是因为代理不支持https。我所做的是清除~/.npmrc中的代理内容,或者使用其他方式。

npm config delete proxy


0
我遇到了同样的问题,通过执行以下命令,我解决了这个问题:
1. npm config delete registry-name

你可以用你实际的注册表替换。
2. npm config delete registry
3. npm config delete @registry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接