IntelliJ IDEA:運行和調(diào)試Node.js

2019-03-06 16:01 更新

運行和調(diào)試Node.js

此功能僅在Ultimate版本中受支持。

IntelliJ IDEA可幫助您運行和調(diào)試Node.js應(yīng)用程序。您可以調(diào)試從IntelliJ IDEA啟動的應(yīng)用程序以及附加到已運行的應(yīng)用程序。

使用準備

按照“插件管理”中的說明在“插件設(shè)置”頁面上安裝NodeJS插件。

運行Node.js應(yīng)用程序

IntelliJ IDEA根據(jù)Node.js類型的運行配置運行Node.js應(yīng)用程序。IntelliJ IDEA還使用此配置在本地調(diào)試Node.js應(yīng)用程序。

創(chuàng)建Node.js運行/調(diào)試配置

  1. 從主菜單中,選擇:運行|編輯配置,然后在“編輯配置”對話框中,單擊工具欄上的 圖標一般添加,并從彈出列表中選擇“Node.js”。將打開“運行/調(diào)試配置:Node.js”對話框。

  2. 指定要使用的Node.js解釋器。這可能是一個本地Node.js的解釋或適用于Linux在Windows子系統(tǒng)的Node.js。

  3. 在“JavaScript文件”字段中,指定啟動它的應(yīng)用程序的主文件的路徑(例如,Node.js Express應(yīng)用程序的bin/www)。

  4. 可選:
    • 指定自定義Node.js開頭的節(jié)點參數(shù)。例如,要使您的應(yīng)用程序可以進行遠程調(diào)試,請根據(jù)您的Node.js版本鍵入其中一個調(diào)試標志:對于Node.js版本6.5及更高版本:--inspect=<debugger port>--debug=<debugger port>用于早于8的任何Node.js版本。默認調(diào)試器端口為5858。

    • 在“應(yīng)用程序參數(shù)” 文本框中,指定要在啟動時通過process.argv數(shù)組傳遞給應(yīng)用程序的Node.js特定參數(shù)。

運行應(yīng)用程序

  • 在工具欄上的“選擇運行/調(diào)試配置”下拉列表中選擇新創(chuàng)建的Node.js配置,然后單擊它旁邊的 跑。應(yīng)用程序啟動,“運行工具”窗口打開,顯示應(yīng)用程序輸出。 

如果在應(yīng)用程序中使用像morgan這樣的日志記錄工具,并且此工具將日志寫入文件,則可以在“運行”工具窗口的“控制臺”選項卡中查看這些日志。

在運行Node.js應(yīng)用程序時管理日志

  1. 如上所述,創(chuàng)建Node.js運行/調(diào)試配置 , 然后轉(zhuǎn)到“日志”選項卡。

  2. 單擊“要在控制臺字段中顯示的日志文件”字段旁邊的 圖標一般添加svg,其中列出了可用的日志文件(如果有)。

  3. 在打開的“編輯日志文件別名”對話框中,鍵入要在日志條目列表中顯示的別名,并指定日志文件的位置。選擇是要顯示此模式所涵蓋的所有文件還是僅顯示最后一個文件。

  4. 單擊“確定”返回“Node.js運行/調(diào)試配置”對話框,其中新的日志文件將添加到列表中。選中旁邊的“激活”復(fù)選框。要跳過以前的內(nèi)容,請選中“跳過內(nèi)容”復(fù)選框。

  5. 可選:
    • 要啟用將控制臺輸出保存到日志文件,請選中“將控制臺輸出保存到文件”復(fù)選框并指定文件位置。

    • 選擇何時顯示控制臺。

    Node.js運行/調(diào)試配置:日志選項卡

調(diào)試Node.js應(yīng)用程序

IntelliJ IDEA可以更輕松地調(diào)試Node.js應(yīng)用程序。您可以在JavaScript或TypeScript代碼中放置斷點,這樣您就不再需要任何debugger和console.log()語句。您可以做很多事情來幫助您探索代碼并了解錯誤的位置。在調(diào)試工具窗口中,您可以查看調(diào)用堆棧和當前狀態(tài)的變量,在編輯器中計算表達式,并逐步執(zhí)行代碼。

本地和遠程調(diào)試

IntelliJ IDEA支持兩種調(diào)試模式:

  • 本地調(diào)試:在此模式下,您的應(yīng)用程序從IntelliJ IDEA啟動,并在您的計算機上本地運行。要調(diào)試它,請使用Node.js配置。
  • 調(diào)試遠程應(yīng)用程序:在此模式下,應(yīng)用程序在調(diào)試模式下的遠程環(huán)境中運行,IntelliJ IDEA連接到正在運行的進程。IntelliJ IDEA識別--inspect和--debug標志,以便您可以使任何應(yīng)用程序可以進行遠程調(diào)試。IntelliJ IDEA支持使用Chrome調(diào)試協(xié)議和V8調(diào)試協(xié)議 (也稱為舊版協(xié)議)進行遠程調(diào)試。在任何一種情況下,都會通過該“附加到Node.js/Chrome”類型的運行/調(diào)試配置啟動調(diào)試會話。

在本地調(diào)試Node.js應(yīng)用程序

  1. 必要時在Node.js代碼中設(shè)置斷點。

  2. 如上所述,創(chuàng)建Node.js運行/調(diào)試配置。如有必要,IntelliJ IDEA可以生成JavaScript調(diào)試配置,并與Node.js配置一起自動啟動 ,如啟動JavaScript調(diào)試配置和Node.js配置中所述。

  3. 在工具欄上的“選擇運行/調(diào)試配置”下拉列表中選擇新創(chuàng)建的Node.js配置,然后單擊它旁邊的 圖標動作startDebugger svg。將打開“調(diào)試工具窗口”。

  4. 執(zhí)行將觸發(fā)使用斷點執(zhí)行代碼的步驟。

  5. 切換到IntelliJ IDEA,現(xiàn)在啟用了調(diào)試工具窗口的控件。繼續(xù)調(diào)試會話 - 逐步執(zhí)行斷點,在幀之間切換,即時更改值,檢查暫停的程序,計算表達式以及設(shè)置監(jiān)視。

    1

使用交互式調(diào)試器控制臺

在調(diào)試Node.js應(yīng)用程序時,IntelliJ IDEA在“調(diào)試”工具窗口中顯示兩個控制臺選項卡- 控制臺和調(diào)試器控制臺。

  • 所述“控制臺”選項卡顯示節(jié)點過程本身的輸出,即,直接寫入process.stdout和process.stderr或使用console.*記錄。
    ws_node_debugging_process_console.png
  • “調(diào)試器控制臺”讓您可以執(zhí)行JavaScript代碼,查看console.log消息,跳轉(zhuǎn)到console.log被調(diào)用的位置,并使用Chrome調(diào)試協(xié)議提供的其他控制臺功能。(提示:鍵入多行代碼片段時,按Shift + Enter開始新行,按Ctrl + Enter分割行。)
    ws_node_debugging_debug_console.png 

調(diào)試正在運行的Node.js應(yīng)用程序

使用IntelliJ IDEA,您可以調(diào)試在遠程環(huán)境中運行的應(yīng)用程序。IntelliJ IDEA支持使用Chrome調(diào)試協(xié)議和V8調(diào)試協(xié)議(也稱為舊版協(xié)議)進行遠程調(diào)試。在任何一種情況下,都會通過“附加到Node.js/Chrome”配置啟動調(diào)試會話。

使用Chrome調(diào)試協(xié)議進行調(diào)試:

提示:使用此協(xié)議調(diào)試以--inspect標志啟動的應(yīng)用程序。此標志用于6.3之后的Node.js版本。

  1. 根據(jù)需要設(shè)置斷點。

  2. 從主菜單選擇:運行|編輯配置,然后在打開的“編輯配置”對話框中單擊 添加新配置,并從列表中選擇“附加到Node.js/Chrome”。將打開“運行/調(diào)試配置:附加到Node.js/Chrome”對話框。

  3. 在啟動要連接的Node.js進程時,指定運行目標應(yīng)用程序的主機以及傳遞給--inspect的端口。從“終端”工具窗口或控制正在運行的應(yīng)用程序的“運行”工具窗口中的信息消息Debugger listening <host>:<port>中復(fù)制端口號。默認端口為9229。(提示:可選的,在“本地文件的遠程URL”區(qū)域中指定項目文件夾的遠程路徑。如果遠程環(huán)境中的應(yīng)用程序根文件夾與本地根文件夾的名稱不同,這將非常有用。)

  4. 在“附加到”區(qū)域中,選擇“以--inspect開頭的Chrome或Node.js> 6.3”。

  5. 在工具欄上的選擇運行/調(diào)試配置下拉列表中選擇新創(chuàng)建的“附加到Node.js/Chrome”配置, 然后單擊旁邊的 圖標動作startDebugger svg。在打開的“調(diào)試工具窗口”。 

  6. 執(zhí)行將在斷點處觸發(fā)代碼的操作。對調(diào)試會話的控制返回到IntelliJ IDEA。

  7. 切換到IntelliJ IDEA。在“調(diào)試”工具窗口中,逐步執(zhí)行斷點,在幀之間切換,即時更改值,檢查暫停的程序,計算表達式以及設(shè)置監(jiān)視。

使用V8調(diào)試協(xié)議進行調(diào)試:

提示:使用此協(xié)議以調(diào)試使用--debug標志啟動的應(yīng)用程序。此標志用于早于8的Node.js版本。

  1. 如上所述,創(chuàng)建“附加到Node.js/Chrome”運行/調(diào)試配置,并指定傳遞給--debug的主機和端口。默認端口為9229。

  2. 確保已使用以下參數(shù)在遠程環(huán)境中啟動要調(diào)試的應(yīng)用程序:--debug=<debugger port>。默認端口是5858。

  3. 在使用Chrome調(diào)試協(xié)議的調(diào)試會話期間繼續(xù) 。

調(diào)試使用nodemon的Node.js應(yīng)用程序

IntelliJ IDEA內(nèi)置調(diào)試器可以自動重新連接到正在運行的Node.js進程。這使您可以調(diào)試使用nodemon實用程序的Node.js應(yīng)用程序,該實用程序會在代碼更新時自動重新加載Node.js進程。要調(diào)試此類應(yīng)用程序,您需要在調(diào)試模式下啟動它(帶有--inspect標志),然后使用“附加到Node.js/Chrome”調(diào)試配置并使用“自動重新連接”選項連接到該應(yīng)用程序。

安裝nodemon:

  • 打開嵌入式終端(Alt+F12)并在命令提示符下鍵入npm install --save-dev nodemonyarn add nodemon --dev以將nodemon安裝為開發(fā)依賴項。

在調(diào)試模式下使用nodemon啟動應(yīng)用程序:

  • 創(chuàng)建并運行以下npm debug腳本:

    debug": "nodemon --inspect <path_to_the_file_that_starts_your_application>
  • 或者,如上所述,通過Node.js運行/調(diào)試配置傳遞inspect標志 。

調(diào)試應(yīng)用程序:

  1. 根據(jù)需要在代碼中設(shè)置斷點。

  2. 創(chuàng)建一個新的“附加到Node.js/Chrome”配置,如“調(diào)試正在運行的Node.js應(yīng)用程序”中所述,并選中“自動重新連接”復(fù)選框。 

    不附加Node.js運行配置:選中自動重新連接復(fù)選框
    通常,您不需要更改配置中的端口(9229),因為它是調(diào)試器正在偵聽的默認端口。但是,您可以仔細檢查在調(diào)試模式下運行應(yīng)用程序時記錄的消息中使用的端口。
    Nodemon在調(diào)試模式下運行的Node.js應(yīng)用程序:檢查端口
  3. 在工具欄上的“選擇運行/調(diào)試配置”下拉列表中選擇新創(chuàng)建的“附加到Node.js/Chrome”配置,然后單擊旁邊的 調(diào)試按鈕。調(diào)試器停在您在IntelliJ IDEA中的代碼中放置的斷點處。 

    現(xiàn)在,每次對代碼進行任何更改并保存(Ctrl+S)它們時,nodemon都會自動重新加載應(yīng)用程序,調(diào)試器將自動重新連接到重新啟動的進程。

與Node.js配置一起啟動JavaScript Debug配置

使用IntelliJ IDEA,您可以在兩種模式下調(diào)試應(yīng)用程序的服務(wù)器端代碼和客戶端JavaScript代碼:

  • 另外,使用單次運行配置。
  • 同時,使用復(fù)雜的Node.js和JavaScript Debug配置。您所需要的只是配置瀏覽器的行為并啟用調(diào)試應(yīng)用程序的客戶端代碼。此功能是通過JavaScript Debug運行配置提供的,因此從技術(shù)上講,IntelliJ IDEA會為服務(wù)器端和客戶端代碼創(chuàng)建單獨的運行配置,但您可以在一個專用的Node.js運行配置中指定所有設(shè)置。

創(chuàng)建復(fù)合Node.js/JavaScript調(diào)試配置:

  1. 在主菜單上選擇:運行|編輯配置。

  2. 從列表中,選擇Node.js運行配置以與JavaScript Debug配置一起啟動。在打開的對話框中,切換到“瀏覽器/實時編輯”選項卡。

  3. 選擇“啟動后”,在啟動調(diào)試會話時自動啟動瀏覽器。

  4. 在下面的文本框中,鍵入要在其中打開應(yīng)用程序的URL地址。

  5. 從“啟動后”復(fù)選框旁邊的下拉列表中選擇要使用的瀏覽器。
    • 要使用系統(tǒng)默認瀏覽器,請選擇“默認”。

    • 要使用自定義瀏覽器,請從列表中選擇它。請注意,僅在Chrome中完全支持實時修改。

    • 要配置瀏覽器,請單擊“瀏覽( browseButton)”并調(diào)整打開的“Web瀏覽器”對話框中的設(shè)置。

  6. 選擇“使用JavaScript調(diào)試器”。

在Node.js應(yīng)用程序中啟用Live Edit:

  1. 按照“插件管理”中的說明在“插件設(shè)置”頁面上安裝LiveEdit插件

  2. 在“設(shè)置/首選項”對話框(Ctrl+Alt+S)中,單擊“構(gòu)建,執(zhí)行,部署”下的“調(diào)試器”,然后單擊“實時編輯”。“實時編輯”頁面將打開。

  3. 選擇“在更改時更新Node.js應(yīng)用程序”。指定在編輯器中更改代碼和在瀏覽器中顯示此更改之間的時間延遲:接受默認值300 ms或使用相應(yīng)字段旁邊的旋轉(zhuǎn)框指定自定義值。

調(diào)試在遠程環(huán)境中運行的Node.js應(yīng)用程序

使用IntelliJ IDEA,您可以附加到在Vagrant框中,Docker容器中,或通過各種傳輸協(xié)議或通過SSH訪問的遠程主機上運行的Node.js應(yīng)用程序。

調(diào)試Docker容器中的Node.js應(yīng)用程序:

IntelliJ IDEA支持通過Node.js類型的運行/調(diào)試配置調(diào)試Docker容器中的Node.js應(yīng)用程序。

在開始調(diào)試Docker上的Node.js應(yīng)用程序之前:

  1. 確保已安裝,配置和運行Docker。

在Docker上選擇Node.js解釋器:

  1. 如上所述,創(chuàng)建Node.js運行/調(diào)試配置 。

  2. 從下拉列表中選擇“遠程解釋器 -  Docker”類型的已配置Node.js解釋器之一,或者配置一個新解釋器。

指定Docker容器設(shè)置:

  • 單擊“編輯Docker容器設(shè)置”字段旁邊的 browseButton, 然后在打開的“編輯Docker容器設(shè)置”對話框中指定設(shè)置。 

  • 或者,選擇“自動配置”復(fù)選框以自動執(zhí)行此操作。

配置端口綁定:

注意:即使使用自動配置,您仍然需要將運行應(yīng)用程序的端口與容器的端口綁定。這些公開的端口可在Docker主機的IP地址上使用(默認為192.168.99.100)。調(diào)試Node.js Express應(yīng)用程序的客戶端時需要這樣的綁定。在這種情況下,您需要從計算機打開瀏覽器并通過應(yīng)用程序中指定的端口訪問容器主機上的應(yīng)用程序。

  1. 在“Docker容器設(shè)置”字段中單擊 圖標一般openDisk svg,并在打開的“編輯Docker容器設(shè)置”對話框中展開“端口綁定”區(qū)域。

  2. 單擊 圖標一般添加svg,并在打開的“端口綁定”對話框中,按如下方式映射端口:
    • 在“容器端口”文本框中,鍵入應(yīng)用程序中指定的端口。

    • 在“主機端口”文本框中,鍵入要從計算機在瀏覽器中打開應(yīng)用程序的端口。

    • 在“主機IP”文本框中,鍵入Docker主機的IP地址,默認IP為192.168.99.100。主機在“設(shè)置/首選項”對話框的“Docker”頁面上的API URL字段中指定。

    • 單擊“確定”返回“編輯Docker容器設(shè)置”對話框,其中將新端口映射添加到列表中。

  3. 單擊“確定”返回“運行/調(diào)試配置:Node.js”對話框。

開始調(diào)試:

  1. 根據(jù)需要在Node.js代碼中設(shè)置斷點。

  2. 在工具欄上的“選擇運行/調(diào)試配置”下拉列表中選擇新創(chuàng)建的Node.js配置,然后單擊它旁邊的  圖標動作startDebugger svg。

  3. 如上所述,在本地調(diào)試會話期間繼續(xù) 。

Node.js多進程調(diào)試

IntelliJ IDEA支持調(diào)試由child_process.fork()方法或集群模塊啟動的其他Node.js進程。此類進程在“調(diào)試工具”窗口的“調(diào)試器”選項卡上的“框架”窗格中顯示為線程。 

  1. 設(shè)置要調(diào)試的進程中的斷點。

  2. 創(chuàng)建Node.js運行/調(diào)試配置。

  3. 在工具欄的“選擇運行/調(diào)試配置”下拉列表中選擇新創(chuàng)建的配置,然后單擊“調(diào)試(  圖標動作startDebugger svg)”。

    打開“調(diào)試工具窗口”,“框架”下拉列表一旦啟動就會顯示其他進程作為線程:

    IntelliJ IDEA:運行和調(diào)試Node.js

    要檢查進程的數(shù)據(jù)(變量,監(jiān)視等),請在列表中選擇其線程,并在“變量和監(jiān)視”窗格中查看其數(shù)據(jù)。選擇其他進程時,窗格的內(nèi)容會相應(yīng)更新。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號