Nodejs新手问题,node-inspector能边运行边调试么?

Nodejs新手问题,node-inspector能边运行边调试么?

比如我需要观察一个post请求的内容,
先运行node-inspector,然后运行node --debug-brk index.js,
这是可以在0.0.0.0打开调试页面,但访问localhost无法出现app本身的页面了,
请问可以用node-inspector一边运行一边调试么?

4 回复

当然可以使用 node-inspector 边运行边调试。node-inspector 是一个基于 Chrome 开发者工具的 Node.js 调试器,允许你在浏览器中进行断点调试、查看变量、堆栈跟踪等功能。

以下是如何使用 node-inspector 进行调试的具体步骤:

  1. 安装 node-inspector: 首先,你需要全局安装 node-inspector

    npm install -g node-inspector
    
  2. 启动 node-inspector: 打开一个新的终端窗口,运行以下命令来启动 node-inspector

    node-inspector
    

    默认情况下,它会监听 http://127.0.0.1:8080

  3. 启动调试模式: 在另一个终端窗口中,运行你的应用并启用调试模式。使用 --debug-brk 参数可以让 Node.js 在启动时暂停在第一个可调试的行上。

    node --debug-brk index.js
    
  4. 访问调试界面: 打开浏览器(如 Chrome 或 Firefox),访问 http://127.0.0.1:8080/debug?port=5858。你应该能看到 node-inspector 的界面。

示例代码

假设你有一个简单的 Express 应用来处理 POST 请求:

// index.js
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

app.post('/api/data', (req, res) => {
    console.log(req.body);
    res.send('Data received');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

调试过程

  1. 启动 node-inspector:

    node-inspector
    
  2. 启动调试模式:

    node --debug-brk index.js
    
  3. 访问调试界面: 打开浏览器,访问 http://127.0.0.1:8080/debug?port=5858

  4. 设置断点: 在 node-inspector 界面中,找到 /index.js 文件中的 console.log(req.body); 行,并设置断点。

  5. 发送 POST 请求: 使用 Postman 或其他工具发送一个 POST 请求到 http://localhost:3000/api/data,你会看到调试界面跳转到断点处。

这样,你就可以在调试的同时继续观察应用程序的行为。希望这些步骤对你有所帮助!


可以啊。你先要点一下继续运行,让httpServer启动起来吧。

大侠请指教,继续运行在哪点啊?没找到

使用 node-inspector 可以实现边运行边调试的需求。你提到的情况可能是由于你的应用在启动时就挂起了(因为使用了 --debug-brk 参数),导致你无法立即访问到应用的页面。

下面是如何正确地使用 node-inspector 来边运行边调试的一个简单示例:

  1. 首先安装 node-inspector

    npm install -g node-inspector
    
  2. 在你的项目中创建一个简单的服务器文件 index.js

    const http = require('http');
    
    http.createServer((req, res) => {
        if (req.method === 'POST') {
            let body = [];
            req.on('data', chunk => {
                body.push(chunk);
            }).on('end', () => {
                body = Buffer.concat(body).toString();
                console.log('Received POST request:', body);
                res.writeHead(200, {'Content-Type': 'text/plain'});
                res.end('POST request received!');
            });
        } else {
            res.writeHead(200, {'Content-Type': 'text/plain'});
            res.end('Hello World\n');
        }
    }).listen(3000, '0.0.0.0');
    
  3. 启动调试模式并打开 node-inspector

    node-debug --web-host=localhost index.js
    

    或者使用更现代的方式通过 node --inspect 运行:

    node --inspect-brk index.js
    

    然后在浏览器中打开 http://localhost:8080 访问 node-inspector 的界面。

  4. 设置断点:在你想要检查的地方(例如,在处理 POST 请求的部分)设置断点。

  5. 在浏览器中发起请求,这时你的 Node.js 应用会被暂停在断点处,你可以通过 node-inspector 的界面来检查变量值、调用栈等信息。

如果你使用的是较新的 Node.js 版本(v8+),建议直接使用内置的 --inspect 调试器,因为它比 node-inspector 更稳定且功能更强大。

回到顶部