如何调试 nodejs API

How debug a nodejs API

我一直在做一个 vue 项目。

这个 vue 项目使用我创建的 nodejs API,简单来说,它们是两个完全不同的项目,它们不在同一个目录中,它们是分开启动的。

问题是每当我使用 node --inspect --debug-break event_type.controller.js 调试路由时,例如名为:

"/eventtype/create"

exports.create = (req, res) => {
  const userId = jwt.getUserId(req.headers.authorization);

  if (userId == null) {
    res.status(401).send(Response.response401());
    return;
  }
  // Validate request
  if (!req.body.label || !req.body.calendarId) {
    res.status(400).send(Response.response400());
    return;
  }

  const calendarId = req.body.calendarId; // Calendar id

  // Save to database
  EventType.create({
    label: req.body.label,
  }).then((eventType) => {
    Calendar.findByPk(calendarId).then((calendar) => {
      eventType.addCalendar(calendar); // Add a Calendar
      res.status(201).send(eventType);
    }).catch((err) => {
      res.status(500).send(Response.response500(err.message));
    });
  }).catch((err) => {
    res.status(500).send(Response.response500(err.message));
  });
};

即使我在 const userId = jwt.getUserId(req.headers.authorization);

上创建断点

我从我的 vue 应用程序触发了 api createEventType 事件,我的断点没有通过。

另外,当我在调试器的第一行断点后按 f8 键时,我的文件会自动关闭。

我不使用 VS CodeVim 用于编码,但我听说也许 Vs Code 可以允许一种调试 nodejs 应用程序的简化方法。

注意:我使用 V8 节点调试器。

对于较新的 NodeJS 版本 (> 7.0.0),您需要使用

node --inspect-brk event_type.controller.js

而不是

node --inspect --debug-break event_type.controller.js

在应用程序代码的第一行中断。有关详细信息,请参阅 https://nodejs.org/api/debugger.html#debugger_advanced_usage

解决方案(即使它不是真正的解决方案)是将 console.log 添加到我要调试的行。