Electron 開發過程中主進程的無法看到 console.log 輸出怎么辦
開發過程中命令行工具(powershell、terminal)內無法看到 console.log 輸出
Eelectron 的在開發過程中主進程 NodeJS 內往往需要 console.log 來進行簡單的調式
渲染進程的 console.log 輸出到開發工具控制臺中,這和瀏覽器中的 web 調式一樣
而主進程的 console.log 輸出到命令行中
在主進程中有些情況下,console.log 無法在啟動主進程的命令行中看到輸出
現在碰到有以下兩種情況分別影響輸出信息:
spawn 影響 console.log
當使用 Node.js 的 spawn 方法啟動 Electron 應用程序時,主進程內的 console.log 輸出不會顯示在命令行中。這是因為 spawn 方法會將 Electron 應用程序的輸出重定向到子進程的標準輸出流,而不是父進程的控制臺。
要解決這個問題,您可以通過在 spawn 方法中設置 stdio 選項來將子進程的標準輸出流重定向到父進程的控制臺。例如:
const { spawn } = require('child_process');
const child = spawn('yarn', ['參數'], { stdio: 'inherit' });
在這個示例中,stdio: 'inherit' 選項將子進程的標準輸入流、輸出流和錯誤流都重定向到父進程的控制臺,這樣就可以在命令行中看到 Electron 應用程序的 console.log 輸出了。
electron-log 模塊影響 console.log
還有,如果在Electron 主進程中使用了 electron-log 模塊,也會影響 console.log 輸出
可用 console.info , console.warn , console.error 等方法代替
如果在運行啟動 Electron 程序時同時使用了 ora-classic 模塊,出會影響 console.log 輸出
例如使用以下創建了 spinner 實例
const spinner = ora({ text: "Loading ==> ", color: "green" }).start();
spinner.text = '....'
記得在 electron:serve 運行后,還想看到主進程的 console.info 輸出,則需要結束
spinner.succeed()
注:轉載請注明出處博客園:王二狗Sheldon池中物 (willian12345@126.com)