开发过程中命令行工具(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()