首页 > 解决方案 > 如何调试 nodejs API

问题描述

我一直在做一个 vue 项目。

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

问题是每当我使用node --inspect --debug-break event_type.controller.js例如名为:

“/事件类型/创建”

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 Code而是使用Vim进行编码,但我听说 Vs Code 可能允许一种简化的方式来调试 nodejs 应用程序。

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

标签: javascriptnode.jsvue.jsgoogle-chrome-devtoolsnode-debugger

解决方案


对于较新的 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


推荐阅读