2015-07-19 65 views
0

当我在命令行中使用'npm start'开始我的应用程序,我可以在浏览它:3000如何调试节点/快递?

..但不是当我开始使用它'node app.js'

当我尝试'node --debug app.js'我得到一个控制台窗口的消息

“调试器监听端口5858”

与Visual Studio和节点工具包,我会得到相同的。使用Eclipse和Enide,我可以得到同样的结果。

我已经使用内置的命令行调试节点尝试过,但调试后>出现提示,发出继续或下一步命令什么也不做,我不能在浏览应用程序:3000

我已经安装了node-inspector,在'node --debug app.js'之后,我可以在node-inspector chrome选项卡中看到app.js:8080,但无法在3000处浏览我的应用程序,无法获得断点。

我想这让调试工作,我需要'node app.js'运行,并且不使用'npm start' ..

我错过了什么重要的节点配置的细节?

为什么我的应用在使用'node app.js'时不可浏览?

任何建议表示赞赏..

回答

2

你真正开始使用不同的两个代码目前存在的方式应用程序 - 一个包括调试器和一个不。

如果您运行的默认Express 4的设置,如果你检查的package.json文件,你会看到这个部分:

"scripts": { 
    "start": "node ./bin/www" 
    } 

也就是说当您运行npm start时执行的文件,因此在运行节点app.js实际上是一个不同的脚本。

如果您在bin/www看一看,你会看到在调试器调用:

var debug = require('debug')('myapp'); 

要运行使用:

DEBUG=myapp ./bin/www 

如果您正在使用NPM开始,你可以将其添加到package.json或使用完全相同的命令从cmd行:

"scripts": { 
    "start": "DEBUG=myapp node ./bin/www" 
    } 
+0

好吧,我看到...'npm start'正在调用在'package.json'中定义的启动脚本,很好的解释了很多...我可以告诉visual studio/enide使用'npm start'而不是'node app.js'....或者使用命令行...但我在哪里放'DEBUG = myapp ./bin/www',以便节点检查员将附加?在.bin/www脚本中? – Kickaha

+1

@Kickaha我没有使用node-inspector,但看起来你可能会将node-debug lib与debug lib混淆。刚刚看了一下node-inspector,看起来你只是全局安装,然后使用node-debug来启动它,所以'node-debug。/ bin/www'应该这样做。 – Ben

+0

好吧,我发现对于Visual Studio,我需要破解'myApp.njsproj'项目文件来添加bin/www作为启动文件。对于Eclipse,它在Run> Run Configurations> Node Configuration中设置..(我不能' t使用Eclipse设置断点,但可以与节点检查器一起使用它..)理解bin/www是一个文件而不是一个目录是关键,所以欢呼..另一位非常擅长快速调试的编辑器我发现'MS码'。它仍处于测试阶段,但对于这项工作来说,这是一个更好的工具。如果我需要在终端中调试,我会回到内置的调试器。再次感谢本。 – Kickaha