2015-07-19 84 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