nodejs命令行調試程序(nodejs遠程調試)

本文目錄一覽:

如何調試nodejs

Node Inspector 是一個可在webkit內核瀏覽器下進行nodejs調試的工具,其界面基本上跟chrome的調試工具一樣,使用非常方便。

首先在全局環境中安裝node inspector

[javascript] view plaincopy

npm install -g node-inspector

安裝完成之後,以調試模式運行需要調試的node代碼,比如

[javascript] view plaincopy

node –debug-brk app.js

這種方式會在代碼運行的時候,強制在第一行添加斷點

這時,會出現「debugger listening on port 5858」的提示

默認的端口是5858,也可以像這樣修改:

node –debug-brk[=3000] app.js

然後,啟動node-inspector,

[javascript] view plaincopy

node-inspector 

(因為之前的nodejs代碼在運行,所以命令行窗口沒辦法輸入新的命令,所以啟動node-inspector需要新打開一個命令行窗口來輸入)

根據提示中的地址,打開

就可以看到,一個模擬Chrome調試窗口的頁面,加載了node中的所有代碼,具體的調試方式,就和Chrome一樣了。

還有一種方式是在代碼中需要添加斷點的地方,加入

[javascript] view plaincopy

debugger;

以下面這種方式運行

[javascript] view plaincopy

node –debug app.js

這樣代碼會運行到需要debugger的地方暫停。

如何在iis上部署node 調試

Node Inspector 是一個可在webkit內核瀏覽器下進行nodejs調試的工具,其界面基本上跟chrome的調試工具一樣,使用非常方便。

首先在全局環境中安裝node inspector

[javascript] view plaincopy

npm install -g node-inspector

安裝完成之後,以調試模式運行需要調試的node代碼,比如

[javascript] view plaincopy

node –debug-brk app.js

這種方式會在代碼運行的時候,強制在第一行添加斷點

這時,會出現「debugger listening on port 5858」的提示

默認的端口是5858,也可以像這樣修改:

node –debug-brk[=3000] app.js

然後,啟動node-inspector,

[javascript] view plaincopy

node-inspector

(因為之前的nodejs代碼在運行,所以命令行窗口沒辦法輸入新的命令,所以啟動node-inspector需要新打開一個命令行窗口來輸入)

根據提示中的地址,打開

就可以看到,一個模擬Chrome調試窗口的頁面,加載了node中的所有代碼,具體的調試方式,就和Chrome一樣了。

還有一種方式是在代碼中需要添加斷點的地方,加入

[javascript] view plaincopy

debugger;

以下面這種方式運行

[javascript] view plaincopy

node –debug app.js

這樣代碼會運行到需要debugger的地方暫停。

webstorm怎麼啟動nodejs的調試和服務器

1.安裝:npm install -g node-inspector

2.啟動debug模式(單獨命令行):

node-debug (該命令默認8080端口)

node-debug –web-port 1984 (定義任意端口)

3.訪問chrome debug devTools

路徑如:;port=5858

4.啟動gulp或者grunt服務(具有gulp或者grunt任務時)

node –debug-brk $(which grunt) server (這種模式使用在第一次初始化執行的代碼)

node –debug $(which grunt) server(這種模式使用在初始化之後監聽的node代碼)

如何使用DevTools調試Nodejs運行的Javascript

目前,常用的瀏覽器IE、Chrome、Firefox都有相應的腳本調試功能。我們先來看IE的:

1、在F12開發人員工具中進行調試

打開IE瀏覽器,按下F12鍵,就會打開開發人員工具,這是IE內置的開發人員開發工具,方便開發人員對HTML、CSS、Javascript等網頁資源進行跟蹤調試使用的。

如果你打開的時候沒有固定在網頁底部,可以點擊右上角菜單欄中的按鈕來完成。

我們看到在這個工具窗口裏面有幾個標籤頁,分別是:HTML、CSS、控制台、腳本、探查器和網絡,點開每一個標籤,可以執行相應的任務。

在HTML標籤窗口中,工具欄中的按鈕所執行的操作如下圖:

CSS標籤是用來查看樣式的;控制台顯示網頁中JS的各種輸出信息,包括錯誤信息、用戶日誌等;打開腳本標籤頁,這裏面才是我們想要的內容。

我在圖中用黃色矩形選中連個控件,左側的下拉列表用來選擇文件,右側的按鈕用來啟動調試。當點擊啟動調試後,調試程序會將窗口最大化,我們在選中的文件中找到需要調試的位置,點擊左側邊欄添加斷點即可進行調試。

當有程序運行到我們的斷點處時,就可以進行調試了:

在這裡,我們可以使用快捷鍵進行操作,常用的快捷鍵如下:

F9:添加/移除 斷點

F10:逐過程,即跳過該語句中的方法、表達式等

F11:逐語句調試,即單步調試,會跳入方法、表達式,進行逐語句的跟蹤調試

在執行過程中,如果我們要執行即時的代碼,我們就需要在右側的窗格中輸入代碼,按回車即可:

如果要執行多行代碼,點擊運行按鈕右側的雙箭頭,就會打開多行模式。我就不再截圖片了。

這種直接在瀏覽器中調試的方法同樣適用於Google瀏覽器Chrome和FireFox FireDebug,只不過在細枝末葉上面有些不同罷了,主體的功能都是一樣的。

按F12鍵進入開發者工具,可以查看源代碼、樣式和js:

點擊Scripts按鈕,可以打開這個調試窗口,裏面包含了網頁中腳本文件源碼,點擊左側的按鈕可以打開選擇文件的側窗口。

2、使用debugger關鍵字進行調試

這種方法很簡單,我們只需要在進行調試的地方加入debugger關鍵字,然後當瀏覽器運行到這個關鍵字的時候,就會中斷:

設置以後就可以使用debugger關鍵字進行調試了;進過這樣的設置,我們還可以捕獲到意外的錯誤,進行跟蹤調試。

手把手教你使用nodejs編寫cli(命令行)

前端日常開發中,會遇見各種各樣的cli,比如一行命令幫你打包的webpack,一行命令幫你生成vue項目模板的vue-cli,還有創建react項目的create-react-app等等等等。這些工具極大地方便了我們的日常工作,讓計算機自己去干繁瑣的工作,而我們,就可以節省出大量的時間用於學習、交流、開發、 逛steam 。

但是有時候一些十分特別的需求,我們是找不到適合的cli工具去做的。比如說,你的項目十分龐大,你給項目添加一個新的路由,要經過 創建目錄 – 創建.vue文件 – 更新vue-router的路由列表 這一趟流程,就算快捷鍵創建目錄文件用得再熟悉,也比不過你一行命令來得快,特別是路由目錄嵌套深,.vue文件初始化模板複雜的時候。

所以呢,何不為自己項目寫一個cli?就專門做這些繁瑣的活?

nodejs的cli,本質就是跑node腳本嘛,基本上每位前端er都會:

然後命令行調用

可以做得更逼真一點,我們在package.json裏面的scripts字段上添加一下腳本名:

然後命令行調用:

但是,看到這裡你肯定會說,人家webpack還有vue-cli都是「有名字」的!什麼 vue-cli init app 、 webpack -p 的,多漂亮,看看這個命令行, node index.js ,還 npm run hello ,誰不會啊,丑不拉幾的,怕又不是來水文章的哦?差評!!

別急啊各位大人,接下來就說說,如何給這個node腳本起個名字。

姑且,先把這個cli的名字命名為 hello-cli ,就是我們能夠在命令行裏面,輸入 hello-cli ,然後它就打印一句 hello world ,沒有 node 也沒有 npm ,就是:

這樣,你的第一個cli腳本就成功安裝了,可以在命令行裏面,直接敲你的cli名字,看看結果輸出吧。

另外,如果你僅希望你的cli腳本僅在項目里執行,則需要在你項目裏面新建一個目錄,重複上述的操作,只是在第三步的時候,不要llink到全局裏面去,而是使用 npm i -D file:你的腳本cli目錄路徑 ,把它當成項目的依賴安裝到node_modules裏面去,如果安裝成功,那麼在項目的package.json你會看到多了一條依賴,這條依賴的值不是版本號,而是你腳本的路徑。然後在node_modules裏面會有一個.bin目錄,裏面就存放着你的可執行文件。

當然,這樣安裝的cli腳本,必須在項目的package.json的scripts字段上聲明腳本命令,然後通過 npm run 的方式執行。

哦?這樣子使用的話不就回到最最最開始的時候那種原始的 npm run hello 一樣么。

是的,但是有質的區別。使用 node index.js 這種方式調用的話固然簡單靈活,但是嚴重依賴腳本路徑,一旦目錄結構發生變動,寫在scripts的命令就要更改一次;但是使用npm安裝之後,本地的cli腳本就被拉到node_modules裏面,目錄結構變動對其影響不大。其次是不利於分享與發佈,如果你想把你的cli腳本發佈出去,那麼有一個好聽響亮的名字,比起在說明文檔裏面告訴使用者如何找到你的腳本路徑再用node執行它,簡直好上那麼一萬倍不是么?

這裡也給我們提供了一個cli開發流程思路:

名字有了,輸出也有了,看看我們跟那些大名鼎鼎的cli工具,在形式上還差點啥?對了,人家可以支持不同參數選項的,還可以根據輸入的不同,產生不同的結果。

這樣吧,我們給這個cli加一個功能,既然叫 hello-cli ,那不能只會 hello world 吧,必須要見誰就說 hello 才行:

雖然這個功能很簡單,但是至少也是實現了「根據輸入的不同,產生不同結果」的效果。

命令行上的參數,可以通過 process 這個變量獲取, process 是一個全局對象而不是一個包,不需要通過 require 引入。通過 process 這個對象我們可以拿到當前腳本執行環境等一系列信息,其中就包括命令行的輸入情況,這個信息,保存在 process.argv 這個屬性里。我們可以打印一下:

打印結果:

可以看出,argv是個數組,前兩位是固定的,分別是node程序的路徑和腳本存放的位置,從第三位開始才是額外輸入的內容。那麼實現上面的功能就很簡單了,只要讀取argv數組的第三位,然後輸出出來就可以了。

npm社區中也有一些優秀的命令行參數解析包,比如 yargs ,tj的 commander.js 等等

如果你想使用比較複雜的參數或者命令,建議還是用第三方包比較好,手寫解析太耗精力了。

現在,你可以自由自在的寫你自己的cli腳本了。

如果你希望寫一個項目打完包自動推上git的cli,或者自動從git倉庫裏面拉取項目啟動模板,那麼,你需要通過node的 child_process 模塊開啟子進程,在子進程內調用git命令:

不僅是git命令,包括系統命令、其他cli命令都可以在這裡執行。特別是系統命令,使用系統命令對文件目錄進行操作,效率比fs高到不知道哪裡去了。

社區上也有一些不錯的包,比如阮一峰老師推薦的 shelljs

如果你不那麼希望你的cli用起來那麼「硬核」,希望更人性化一點,比如提供一些友好的輸入、提示啊,給你的輸出加點顏色區分重點啊,寫個簡單的進度條啊等等,那麼你就需要美化一下你的輸出了。

除了顏色這部分,不使用第三方包實現起來非常繁瑣複雜,其他的功能,都可以試試自己寫。

顏色部分使用了第三方包 colors ,這裡就不演示了。

其他都是由nodejs自帶的 readline 模塊實現的。

繪製的思路跟canvas繪製動畫一樣,只不過canvas是清除畫布,而命令行這裡是通過 readline.clearScreenDown 清除輸出。

這樣,一個簡易的,人性化的,帶點點進度條動畫的命令行cli工具就寫好了,你也可以發揮你的想像力,去寫一些更有趣的效果出來。

畢竟我們前端,有瀏覽器我們可以寫動畫,沒了瀏覽器我們一樣可以寫動畫。

原創文章,作者:AKU7V,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/130329.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AKU7V的頭像AKU7V
上一篇 2024-10-03 23:28
下一篇 2024-10-03 23:28

相關推薦

  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟件。在VB中,有許多不同的方法可以運行程序,包括編譯器、發佈程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨着深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟件開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 改善Python程序的90個建議pdf網盤

    本文將從多個方面對改善Python程序的90個建議pdf網盤進行詳細闡述,幫助Python開發者提高程序的性能和效率。 一、代碼優化 1、使用map函數或列表推導式代替for循環。…

    編程 2025-04-29

發表回復

登錄後才能評論