Javascript 为什么dns.lookup会处理这些不正确的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 }

我目前正在尝试使用Node.js创建一个URL缩短微服务。我将不正确的字符串传递到
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,不知道你的意思是什么?我已经把我的其余代码放在上面的编辑中了。