有沒有辦法在 Node.js 服務器運行時(在啟動之后)運行命令并訪問所有函式/變數/等?
例如,
運行后node server.js,有沒有辦法可以通過命令列在實時環境中執行函式或運行命令?
uj5u.com熱心網友回復:
您可以隨時使用核心repl模塊啟動 REPL 。使用useGlobal您可以共享全域范圍,并使用context您可以傳遞您需要的任何本地背景關系:
import repl from 'repl'
const r = repl.start({ useGlobal: true })
r.context.someStuff = 123 // will be accessible as someStuff in REPL
然后您會在控制臺中看到通常的提示,您可以與其互動以運行命令和查看變數。它與您的應用程式在同一行程中運行,因此您可以匯入/需要模塊并訪問它們的匯出等,并且它們的資料將與您的其余代碼共享。
如果您想在代碼中的某個特定點插入它并在那里獲得對區域變數的完全訪問權限,您可以使用在本地范圍內eval呼叫 JavaScript 的自定義函式:eval
repl.start({
eval: (cmd, context, filename, callback) => {
with (context) callback(null, eval(cmd))
}
})
(注意:有了這個,定義新變數let將無法跨命令作業。)
要獲取程式化 REPL 中的歷史記錄,您可以查看repl-story或類似的包。
如果您想通過 Web 瀏覽器遠程訪問類似的控制臺(小心 - 安全風險 - 最好僅通過 SSH 埠轉發提供),請查看node-browser-repl.
如果您正在尋找完整的除錯器體驗,請查看TJ Crowder關于如何將 DevTools 附加到 node.js 應用程式的答案。
uj5u.com熱心網友回復:
基本上,聽起來您正在尋找與瀏覽器控制臺等效的 Node.js,它可用于瀏覽器托管的 JavaScript。
Node.js 沒有直接提供一個(它確實有一個 REPL 可以滿足您的需求;請參閱CherryDT 的回答),但是許多 IDE 包括一個“除錯控制臺”(這就是 VS Code 所說的)或類似的,您可以在何時使用在除錯模式下運行代碼。您可以檢查全域變數(當然,您在 Node.js 應用程式中往往沒有很多全域變數,它們本質上是模塊化的),呼叫全域函式(相同),更確切地說是在暫停時與當前范圍進行互動一個斷點。
您還可以使用除錯標志直接運行 Node.js,該標志告訴它允許除錯器附加到它。例如:
node --inspect-brk server.js
...告訴 Node.js 在啟用除錯的情況下運行。你會看到類似的東西:
偵聽 ws://127.0.0.1:9229/89eff679-76ac-4972-9bd9-3142214c0b1f 的除錯器 如需幫助,請參閱:https://nodejs.org/en/docs/inspector
如果您打開基于 Chromium 的瀏覽器并轉到 URL chrome://inspect,您將看到列出的目標:
目標 (v16.13.2) 跟蹤 index.js 檔案:///路徑/到/server.js 檢查
...inspect鏈接在哪里。單擊它,devtools 將打開,顯示您的代碼,并在代碼開頭的自動斷點處停止執行。(如果您不想從斷點開始,可以使用--inspect而不是。)--inspect-brk
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/468123.html
標籤:javascript 节点.js 命令行
