node.js - Express 端点不反映更改。奇怪的行为
问题描述
我有一个正在编写 API 的快速应用程序,但目前遇到了一些非常奇怪的行为。
我对我的一条 GET 路由进行了更改,当我调用该路由时没有显示更改。我使用 nodemon 所以更改应该会自动更新,但即使手动重新启动服务器也不起作用。我已经尝试了以下事情并且得到了非常奇怪的结果:
- 如果我
console.log()
在方法的最开始添加 a,然后调用该路由,控制台中不会出现任何内容。 - 如果我完全删除该
app.get()
方法并调用该路由,响应仍然会弹出,而不是 404 - 如果我更改路线的名称(例如从“/hello”到“/helloWorld”,响应仍然是旧的,没有反映更改。无论我调用“/hello”还是“helloWorld”,我都会得到即使“/hello”不再存在,我也得到了来自“/hello”的相同旧响应
- 如果我更改
app.get
并app.post
发出发布请求,响应现在会显示所做的更改。但是,如果我发出 get 请求,即使这条路线不再存在,响应也会恢复到旧的。 - 对其他路由进行更改会在调用它们时反映出来。简直就是这条路。
有没有其他人见过这种行为?如果是这样,你做了什么来修复它?
我想我可以将方法更改为 POST 并使请求正文为空,但我想让它在反映更改的情况下工作。
编辑:示例路线:
app.get('/hello', (req: Request, res: Response) => {
console.log("hello"); //added line
pool.query("SELECT * FROM table", async (err: MysqlError, result: any) => {
if (err) {
res.status(500).send({ message: err.message, code: err.code });
return;
}
res.send(result);
});
})
在上面的代码中,当我调用 /hello 路由时,我没有看到控制台打印出“hello”或我所做的任何其他更改。
解决方案
/:id
发生这种情况的原因是因为我有一条路线在此代码上方的端点中寻找参数 ( )。这意味着我试图击中的终点永远不会被击中,因为它会被它上面的那个停止并且永远不会继续。要修复它,我只需将包含参数的路线移动到我试图击中的路线下方。
推荐阅读
- python - 在 Python 中导入模块和函数时出现问题
- karate - 空手道是否能够验证下载端点的 Excel 文件?
- java-8 - 如何使用流将一维整数数组转换为映射
- c++ - 如何对 __uint128_t (128bit) 进行正向和反向位扫描?
- c - 在 C 中实现 pthread_self()
- python - 如何绘制超过 2 个权重的线?
- angular - ngFor 嵌套对象的索引
- google-cloud-platform - 创建新的 Google Cloud 项目时如何解决“父 ID 必须为数字”的问题
- python - 无法找到刮刀的 html 对象
- angularjs - AngularJS将数据分配给函数中的变量