【发布时间】:2018-12-11 15:09:52
【问题描述】:
我正在开发一个简单的页面构建器应用程序,它在前端使用 React,在后端使用 Express。 作为 Ajax 库,我使用 Axios npm 包。下面你可以看到与这个问题相关的代码:
###########
PageList.js
###########
.
.
.
componentDidMount() {
axios.get('/admin/pages')
.then(response => {
console.log(response.data);
})
.catch(err => {
console.log(err);
})
})
}
.
.
.
这是前端部分。在后端,我的路由器可以正常工作,即将我路由到这个控制器(我可以从服务器端控制台上的日志中看到):
####################
controllers/admin.js
####################
.
.
.
exports.getPages = (req, res, next) => {
Page.find()
.then(pages => {
return pages;
})
.catch(err => {
console.log(err)
});
};
.
.
.
前端和后端都作为节点应用程序在 Windows 机器上的 localhost 上运行,在不同的端口上运行。我最初遇到了这个 CORS 问题,我用 cors npm 包解决了这个问题。作为数据库管理员,我使用 mongodb 和 mongoose ODM。
我遇到的问题是,当我向所有后端端点发送 Ajax 请求时,应用程序会堆叠 4 分钟(确切地说,我不知道为什么...) -end 工作,它记录我设置的所有控制台,如果它是一个 POST 请求,它会在 DB 中写入文档,但它会等待 4 分钟,然后前端会提示请求已成功。在此期间,开发工具 --> 网络选项卡中的请求处于待处理状态。
我可以创建一个 git-hub 存储库,但我仍然没有隐藏所有这些敏感信息,即它们仍然在应用程序的某些地方进行硬编码,因此公开访问这些资源是有风险的我用。 所以,如果有人能提前告诉我可能是什么问题,我会很高兴。
谢谢
【问题讨论】:
-
不应该是这样的:
.then(pages => res.send(pages))? -
我会使用通常的调试技巧,专注于缩小问题的可能原因。你可以例如在 Page.find() 调用之前和之后在exports.getPages 中添加当前时间的console.log。如果这仍然需要 4 分钟,则问题出在您的 Page 实现或 Mongodb 中。尝试直接在 Mongodb 主机本地和从 Node 主机远程向 Mongodb 发出基本相同的请求(从命令行)。等等。
-
作为@patrick-hund - 你错过了 res.send()。我敢打赌你会在 4 分钟后超时,没有成功响应。
-
嘿,@Patrick Hund ...非常感谢...完全错过了...正如你所说...
-
????????很高兴为您提供帮助
标签: javascript node.js reactjs express