【发布时间】:2016-06-06 02:45:34
【问题描述】:
所以我的应用程序结构如下:
server.js
router
routes
emails.js
index.js
我在 index.js 中定义了我的路由,如下所示:
module.exports = function (app) {
app.use('/emails', require('./routes/emails'));
};
emails.js 有一个简单的 get 路由,如下所示:
router.get(/*'/emails */'/:id', function (req, res, next) {
console.log('route hit');
})
我在每一行(app.use、router.get 和 console.log)都设置了断点。当我第一次启动我的应用程序时,app.use 和 router.get 的断点被命中。当我进行 API 调用时,我的代码会执行,但我的断点永远不会被命中。
我假设这是我需要配置 VS 代码的一些内部 Node.js 东西,但我不知道该怎么做。
有谁知道让它工作的方法吗?我真的很想使用路由并且没有庞大的 server.js 文件,但不是没有使用 IDE 进行调试的能力。
【问题讨论】:
-
API 调用是什么样的,使用的 URL 是什么,你当前的路由只匹配
/emails/something,而不是/emails/不是/或其他任何事情 -
router.get()在启动时运行并注册一个路由处理程序。router.get()不再被调用。相反,您需要在注册为路由处理程序的特定回调中设置一个断点,并且当路由与传入请求匹配时,该断点将被命中。这与 node.js 无关,而是注册为事件处理程序的回调如何工作(node.js 经常使用的设计模式,但不是 node.js 独有的)。 -
Adeneo - 我知道路由是正确的,因为代码正在执行。
-
jfriend00 - 我正在努力解决这个问题......通过我的断点,我可以看到 server.js 启动时正在设置的路由,但我不确定如何设置回调内部的断点不同(不在console.log上)。我是否需要将我的代码移到另一个函数中并从 router.get 中调用它?
标签: javascript node.js express visual-studio-code