Javascript 为什么dns.lookup会处理这些不正确的URL?
我目前正在尝试使用Node.js创建一个URL缩短微服务。我将不正确的字符串传递到Javascript 为什么dns.lookup会处理这些不正确的URL?,javascript,node.js,Javascript,Node.js,我目前正在尝试使用Node.js创建一个URL缩短微服务。我将不正确的字符串传递到dns.lookup(),以检查它们是否是有效的URL,但是它们返回的不是错误,而是地址和族 dns.lookup('hello', (err, address, family) => { if(err) { res.send('invalid') return }
dns.lookup()
,以检查它们是否是有效的URL,但是它们返回的不是错误,而是地址和族
dns.lookup('hello', (err, address, family) => {
if(err) {
res.send('invalid')
return
} else {
console.log(`error = ${err}`)
console.log(`address = ${address}`)
console.log(`family = ${family}`)
next()
}
});
控制台:
error = null
address = 92.242.132.24
family = 4
如果URL无效,我希望它传递一个错误
编辑:如果有帮助,添加完整代码
var express = require('express')
var app = express()
var cors = require('cors')
var dns = require('dns')
dns.lookup('hello', (err, address, family) => {
if(err) {
console.log(`error = ${err}`)
//res.send('invalid')
//return
} else {
console.log(`error = ${err}`)
console.log(`address = ${address}`)
console.log(`family = ${family}`)
//next()
}
});
var listener = app.listen(3001, function(){
console.log('working on port 3001')
});
事实证明,我的ISP(维珍媒体)有一个名为Barefruit Ltd的第三方,它拦截dns错误并发送回广告:
同时,我发现了一个解决方法,在我的错误处理中添加了
if(err | | address='92.242.132.24')
。看到函数调用很好,但是显示函数定义如何?我得到了错误:getaddrinfo ENOTFOUND hello在GetAddrInfoReqWrap.onlookup[as oncomplete](dns.js:60:26){errno:'enotfind',code:'enotfind',syscall:'getaddrinfo',hostname:'hello'}谢谢Ashish,我刚才收到了你的回复,但是现在它返回了上面的ip,我不知道为什么。这个ip是为伦敦的一个叫做“Barefruit Ltd.”的东西提供的。太奇怪了!JDunken,不知道你的意思是什么?我已经把我的其余代码放在上面的编辑中了。