如何优雅的对后端接口进行远程调试

如何优雅的对后端接口进行远程调试

1 本地搭建好环境

想调试,想必需要进入到编辑器中,然后再打断点查看,我们以vscode为例,安装必要的插件nodemon

yarn add nodemon

2 配置启动文件

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "启动程序",
      "skipFiles": ["<node_internals>/**"],
      "program": "${workspaceFolder}\\index.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Express App",
      "skipFiles": ["<node_internals>/**"],
      "program": "${workspaceFolder}/index.js",
      "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/nodemon",
      "restart": true,
      "console": "integratedTerminal"
    }
  ]
}

因为我们的 nodemon 非全局安装,所以指定目录
${workspaceFolder} 顾名思义,当前工作文件夹,
index.js 是我们的入口文件,如下:

const express = require('express');
const app = express();
const PORT = 60000;

// 中间件,用于解析 JSON 格式的请求体
app.use(express.json());

// 示例的数据,通常这里可以连接数据库或其他数据源
let todos = [
    { id: 1, text: 'Learn Node.js', done: false },
    { id: 2, text: 'Build a REST API', done: false }
];

// GET 请求,获取所有 todos
app.get('/api/todos', (req, res) => {
    res.json(todos);
});

// POST 请求,创建一个新的 todo
app.post('/api/todos', (req, res) => {
    const { text } = req.body;
    const newTodo = {
        id: todos.length + 1,
        text,
        done: false
    };
    todos.push(newTodo);
    res.status(201).json(newTodo);
});

// PUT 请求,更新一个 todo 的状态
app.put('/api/todos/:id', (req, res) => {
    const id = parseInt(req.params.id);
    const updatedTodo = todos.find(todo => todo.id === id);
    if (!updatedTodo) {
        return res.status(404).json({ message: 'Todo not found' });
    }
    updatedTodo.done = !updatedTodo.done;
    res.json(updatedTodo);
});

// DELETE 请求,删除一个 todo
app.delete('/api/todos/:id', (req, res) => {
    const id = parseInt(req.params.id);
    todos = todos.filter(todo => todo.id !== id);
    res.status(204).end();
});

// 启动服务
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

3 配置nginx,让指定的接口请求往想要服务地址请求,进而进入我们的程序

其他

如果是webpack 呢,该如何配置

{
            "type": "node",
            "request": "launch",
            "name": "Launch Webpack",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "runtimeExecutable": "npm",
            "runtimeArgs": ["run", "debug-webpack"],
            "port": 9229,
            "program": "${workspaceFolder}/src/index.js",
            "sourceMaps": true,
            "outFiles": [
                "${workspaceFolder}/dist/**/*.js"
            ]
        }

通过对比发现,核心配置项如下:

  • runtimeExecutable:执行的程序,如 npm 、node、nodemon
    如果是node话可以去掉,此配置,因为可以默认
  • runtimeArgs:入参很常见的有 [run,dev]
  • program:入口文件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值