为什么 NodeJS request() 在飞行模式下在本地主机上失败,而不是 127.0.0.1? (Windows 10)
Why does NodeJS request() fail on localhost in flight mode, but not 127.0.0.1? (Windows 10)
鉴于我已经在本地主机上启动了服务器并且运行(请参阅下面的示例),在节点命令行在线时,我得到了以下:
> var x = request('http://localhost:8080/test.html',
... function(err) { if (err) console.log(err) })
undefined
>
我一直希望得到上面的结果。
如果我切换到飞行模式,我会得到以下信息:
> var x = request('http://localhost:8080/test.html',
... function(err) { if (err) console.log(err) })
undefined
> { Error: getaddrinfo ENOENT localhost:8080
at Object.exports._errnoException (util.js:1022:11)
at errnoException (dns.js:33:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'getaddrinfo',
hostname: 'localhost',
host: 'localhost',
port: '8080' }
用 127.0.0.1
而不是 localhost
再次尝试此操作 无论是否 我处于飞行模式。
问题
为什么 localhost 不起作用?我可以看出这与 Windows 的 DNS 解析器有关。
上面客户端代码的设置
您需要先安装require:
C:\> npm install require
更广泛的背景
我已将其归结为最简单的内容。有关更广泛的上下文,请参阅 Why does web-component-tester time out in flight mode?。
示例服务器
问题与以下服务器无关,只是一个简单的例子。我认为可能任何本地服务器都可以,而不仅仅是 NodeJS。问题出在上面详述的客户端代码中。
示例服务器的设置:
C:\> npm install connect serve-static
server.js:
var connect = require('connect')
var serveStatic = require('serve-static')
connect().use(serveStatic(__dirname)).listen(8080)
test.html:
<html>Really not important, but necessary for completeness</html>
启动服务器:
C:\> node server.js
解决方法是安装Microsoft Loopback Adapter,具体如下:
鉴于我已经在本地主机上启动了服务器并且运行(请参阅下面的示例),在节点命令行在线时,我得到了以下:
> var x = request('http://localhost:8080/test.html',
... function(err) { if (err) console.log(err) })
undefined
>
我一直希望得到上面的结果。
如果我切换到飞行模式,我会得到以下信息:
> var x = request('http://localhost:8080/test.html',
... function(err) { if (err) console.log(err) })
undefined
> { Error: getaddrinfo ENOENT localhost:8080
at Object.exports._errnoException (util.js:1022:11)
at errnoException (dns.js:33:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'getaddrinfo',
hostname: 'localhost',
host: 'localhost',
port: '8080' }
用 127.0.0.1
而不是 localhost
再次尝试此操作 无论是否 我处于飞行模式。
问题
为什么 localhost 不起作用?我可以看出这与 Windows 的 DNS 解析器有关。
上面客户端代码的设置
您需要先安装require:
C:\> npm install require
更广泛的背景
我已将其归结为最简单的内容。有关更广泛的上下文,请参阅 Why does web-component-tester time out in flight mode?。
示例服务器
问题与以下服务器无关,只是一个简单的例子。我认为可能任何本地服务器都可以,而不仅仅是 NodeJS。问题出在上面详述的客户端代码中。
示例服务器的设置:
C:\> npm install connect serve-static
server.js:
var connect = require('connect')
var serveStatic = require('serve-static')
connect().use(serveStatic(__dirname)).listen(8080)
test.html:
<html>Really not important, but necessary for completeness</html>
启动服务器:
C:\> node server.js
解决方法是安装Microsoft Loopback Adapter,具体如下: