当前位置: 首页 > 面试题库 >

错误:nodejs中的getaddrinfo ENOTFOUND进行了get调用

太叔京
2023-03-14
问题内容

我在节点上运行Web服务器,其代码如下

var restify = require('restify');

var server = restify.createServer();

var quotes = [
  { author : 'Audrey Hepburn', text : "Nothing is impossible, the word itself says 'I'm possible'!"},
  { author : 'Walt Disney', text : "You may not realize it when it happens, but a kick in the teeth may be the best thing in the world for you"},
  { author : 'Unknown', text : "Even the greatest was once a beginner. Don't be afraid to take that first step."},
  { author : 'Neale Donald Walsch', text : "You are afraid to die, and you're afraid to live. What a way to exist."}
];

server.get('/', function(req, res) {
  res.json(quotes);
});

server.get('/quote/random', function(req, res) {
  var id = Math.floor(Math.random() * quotes.length);
  var q = quotes[id];
  res.json(q);
});

server.get('/quote/:id', function(req, res) {
  if(quotes.length <= req.params.id || req.params.id < 0) {
    res.statusCode = 404;
    return res.send('Error 404: No quote found');
  }

  var q = quotes[req.params.id];
  res.json(q);
});

server.listen(process.env.PORT || 3011);

然后我想在以下代码中进行获取请求

var https = require('http');

/**
 * HOW TO Make an HTTP Call - GET
 */
// options for GET
var optionsget = {
    host : 'http://localhost',
    port : 3010,
    path : '/quote/random', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};

console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');

// do the GET request
var reqGet = https.request(optionsget, function(res) {
    console.log("statusCode: ", res.statusCode);
    // uncomment it for header details
//  console.log("headers: ", res.headers);


    res.on('data', function(d) {
        console.info('GET result:\n');
        process.stdout.write(d);
        console.info('\n\nCall completed');
    });

});

reqGet.end();
reqGet.on('error', function(e) {
    console.error(e);
});

我只是从节点开始,我什至不知道这是否是正确的方法。我想测试express和restify的性能。我对我编写的服务器代码进行了apache基准测试,发现矛盾的结果是restify更好。所以我想通过html" target="_blank">调用远程服务来进行更多测试读写到mongodb。上面的代码是我的起点。我遇到了错误

{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }

我是否至少朝写方向前进?我要进行哪种测试的正确方法是什么?为什么我得到的结果重新调整的速度快于表达?谁能引导我找到在node / express /
backbone和mongodb中应用的最佳入门教程?


问题答案:

getaddrinfo ENOTFOUND表示客户端无法连接到给定地址。请尝试指定不带http的主机:

var optionsget = {
    host : 'localhost',
    port : 3010,
    path : '/quote/random', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};

关于学习资源,如果您先从http://www.nodebeginner.org/开始学习,然后再读一本好书以获取更深入的知识,则不会出错-
我推荐使用Professional
Node.js
,但是这里有很多内容那里。



 类似资料:
  • 我试图从auth.js调用在文件validation.js中定义的registerValidation函数,但出现以下错误 UnhandledPromiseRejectionWarning:错误:无效消息选项 有谁能告诉我为什么和如何纠正吗? auth.js validation.js

  • 本文向大家介绍nodejs超出最大的调用栈错误问题,包括了nodejs超出最大的调用栈错误问题的使用技巧和注意事项,需要的朋友参考一下 今天早上老大和我说之前项目里面的那个数据要改动,要对 mongodb 中每条记录进行 update 操作,你写个脚本跑一下吧。 然后,我默默的回到电脑前,努力工作的一天又开始了。由于此表数据量有点略大,该有一千多万条记录。所以考虑使用 mongodb 的 curs

  • 我在设置socketIO 1.1以在Heroku上工作时遇到了问题。我在运行Express V4.2。socketio在localhost上运行得很好。然而,在Heroku上,它给出了这个错误: 来自Heroku日志: 从浏览器: 我遵循了套接字IO文档中推荐的配置。相关代码如下: 在我的客户端文件中,脚本如下: 我还尝试了io.connect到、和我的Heroku应用程序域。它们都会产生相同的错

  • 我正在开发一个应用程序,它包含一个自定义列表视图,带有一个删除按钮,我可以从主活动中更新该按钮。 从ListView中删除一行时遇到问题,尽管我正在从自定义列表视图中删除正确的索引,并调用方法,但GUI无法正确更新。 在这里,我写了一个示例项目,就像我在idea中的真实项目,只是更多示例: 主要活动。xml(主布局)只包含名为ListView的ListView MainActivity.java:

  • 当我运行以下命令时,我尝试使用tabla py将PDF转换为表 这是错误消息

  • 本文向大家介绍你了解NodeJs的子进程吗?相关面试题,主要包含被问及你了解NodeJs的子进程吗?时的应答技巧和注意事项,需要的朋友参考一下   node遵循的是单线程单进程的模式,node的单线程是指js的引擎只有一个实例,且在nodejs的主线程中执行,同时node以事件驱动的方式处理IO等异步操作。node的单线程模式,只维持一个主线程,大大减少了线程间切换的开销。   但是node的单线