【问题标题】:Express throws error before request is completeExpress 在请求完成之前抛出错误
【发布时间】:2017-10-31 03:57:18
【问题描述】:

我正在尝试查询数据库并在将结果呈现到模板之前返回要表达的结果。目前,我正在使用 Axios,它会向localhost:3000/api/endpoint 发送请求。我已经验证端点通过邮递员工作,它从 MongoDB 返回我想要的。

我的网络服务器代码如下所示:

app.get('/post/:id', (req, res) => {

  axios.get(`localhost:3000/post/${req.params.id}`)
  .then((response) => {
    console.log(response);
    res.render('post', { content: response.content });
  })
  .catch((err) => {
    console.log(err);
    res.render('404', { error: err });
  });
});

由于某种原因,axios(或express)并没有等待API返回响应,而是跳转到catch,返回404页面。我不确定它为什么会这样。

注意 - 返回的错误是:ECONNRESET 或套接字挂起

如何修复它,以便 express(或 axios)等待 API 查询完成,然后再将其呈现在页面上?

【问题讨论】:

  • 尝试使用http-protocolhttp://localhost:3000/...http://127.0.0.1:3000/...设置完整的url
  • 能否确认服务器是否收到了express发送的请求?
  • 你为什么尝试使用 Axios 查询数据库而不是一些与数据库相关的 npm 模块?
  • 我正在使用 mongoose 查询我的数据库。我用 Axios 调用 API。

标签: javascript node.js express axios http-get


【解决方案1】:

感谢dhilt 的回答。将 localhost 更改为 http://localhost 解决了这个问题,现在它可以完美运行了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2023-03-17
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多