NodeJS调试问题,请高手指教

NodeJS调试问题,请高手指教

我建了一个nodejs web程序,发现用eclips+google chrome插件调试(我的eclipse在apple mac os),不能连上。后我又在服务器上装node-inspector,发现在本地用chorome可以调试,但是就是没有任何网页效果,只有js 代码;我的网址有get参数,后面是/joke?lisuid=111这种,放进去就显示:Cannot GET /xxx/joke?lisuid=111/debug?port=3001。

有高手指点在下,先拜谢了。

6 回复

NodeJS调试问题,请高手指教

我在开发一个Node.js Web应用程序时遇到了一些调试问题。最初我尝试使用Eclipse和Google Chrome插件在Mac OS上进行调试,但发现无法连接到Node.js服务。后来我决定在服务器上安装node-inspector,这样可以在本地通过Chrome浏览器进行调试,却发现页面没有任何效果,只显示了JavaScript代码。

具体来说,我的网址包含GET参数,例如 /joke?lisuid=111。当我尝试访问这个URL时,会收到错误信息 Cannot GET /joke?lisuid=111

示例代码

假设我们有一个简单的Express应用:

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

app.get('/joke', (req, res) => {
    const lisuid = req.query.lisuid;
    console.log(`Received request for lisuid: ${lisuid}`);
    res.send(`Hello, user with ID ${lisuid}!`);
});

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

调试步骤

  1. 安装node-inspector:

    npm install -g node-inspector
    
  2. 启动Node.js应用并开启调试模式:

    node --inspect=0.0.0.0:9229 ./app.js
    
  3. 启动node-inspector:

    node-inspector
    
  4. 在Chrome中打开调试界面: 访问 http://localhost:8080/?ws=localhost:8080&port=9229 并选择你要调试的进程。

  5. 检查路由处理: 确保你的路由处理函数正确处理了GET请求,并且没有遗漏任何逻辑。你可以添加日志来检查是否收到了请求以及请求中的参数。

常见问题

  • Cannot GET /…: 这通常是因为你没有定义对应的路由处理函数。确保你的路由处理函数正确处理了GET请求。

  • 仅显示JavaScript代码: 确保你已经启动了node-inspector并且正确配置了Chrome浏览器以进行调试。

希望这些信息能帮助你解决问题!如果还有其他疑问,请随时提问。


node-inspector调试的是Node进程中的后端代码,比如操作数据库之类的代码,不是前台网页的代码,所以不会有任何网页效果。参数也是用来专门和后台调试器通信的。 所以说你先搞明白你调试的是什么。

node-inspector 调试的时候是跑一个 node-inspector 的后台, 然后跑 node 程序时加上个 --debug flag, 把信息传给后台, Chrome 上访问 debugger 工具的地址就可以对当前代码进行调试了… 当然首先要搞明白用法

这个是由于nodejs的代码有点问题,导致只能在本机调试,而不能通过远程调试。可以通过修改node源码,重新编译解决。可以qq联系:93310746

我的网址有get参数,后面是/joke?lisuid=111这种,放进去就显示:Cannot GET /xxx/joke?lisuid=111/debug?port=3001

根据你的描述,你遇到了Node.js调试过程中的一些问题。首先,你需要确保Node.js应用能够正确处理GET请求,并且在调试模式下能够正常运行。这里有几个建议来帮助你解决问题:

1. 检查路由配置

你提到访问/joke?lisuid=111时收到Cannot GET /xxx/joke?lisuid=111/debug?port=3001错误,这表明你的路由配置可能存在问题。确保你有一个处理/joke路径的路由。

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

app.get('/joke', (req, res) => {
    const lisuid = req.query.lisuid;
    res.send(`Joke for user ${lisuid}`);
});

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

2. 调试工具使用

确保你正确安装并使用了node-inspector或现代的替代品如ndbchrome devtools。如果你使用的是node-inspector,可以通过以下命令启动:

npm install -g node-inspector
node-debug your-script.js

如果使用的是chrome devtools,可以这样启动:

node --inspect-brk your-script.js

然后在Chrome中打开chrome://inspect,点击"Open dedicated DevTools for Node"来连接到正在运行的Node.js进程。

3. 防火墙和网络设置

确保你的防火墙和网络设置没有阻止Node.js应用的访问。你可以尝试通过浏览器直接访问你的服务器IP地址和端口,确认是否能访问。

4. 路径和查询参数处理

确保你的应用正确解析了查询参数。上述示例代码展示了如何从查询字符串中获取lisuid参数。

以上步骤应该能解决你的大部分问题。如果仍然遇到困难,检查你的服务器日志和网络请求,以进一步排查问题。

回到顶部