当进程崩溃时,Nodemon会丢失控制台输出
Nodemon is losing console output when the process is crashing
我不确定这是否纯粹是Windows问题。我没办法在其他地方测试。给出这个非常简单的代码(Coffeescript):
console.log('Calling console.log')
console.error('Calling console.error')
console.log('Calling console.log second time - fails')
console.error('Calling console.error second time - fails')
nonexisting.throwError()
直接与coffee app.coffee
运行它工作得很好,我得到这个:
Calling console.log
Calling console.error
Calling console.log second time - fails
Calling console.error second time - fails
ReferenceError: nonexisting is not defined
....
然而,运行nodemon app.coffee
给我的只是这个:
17 Mar 20:38:56 - [nodemon] starting `coffee.cmd server.coffee`
Calling console.log
Calling console.error
17 Mar 20:38:56 - [nodemon] app crashed - waiting for file changes before starting...
不仅没有异常信息,而且由于某种原因,后来的日志消息也被吞掉了。在更复杂的情况下,我没有办法真正找到崩溃的原因。我试着调试,但一切似乎都很好,console.log/error被调用,但由于某种原因它只是没有显示。异常被Coffeescript捕获并直接发送给stderr。
我想在控制台的开发过程中使用调试实用程序来获得很好的详细输出,并使其更容易发现问题。但这个麻烦制造者是不可能的。一旦发生未捕获的异常,我必须停止nodemon并手动运行整个程序来查找错误。(
)解决方案的所有优雅都消失了。有谁知道是什么原因造成的,如果有一些可能的解决方案吗?
Windows 7 64bit节点0.10.26Nodemon 1.0.15Coffeescript 1.7.1上
消息被抑制,因为进程是使用:
child_process.spawn('coffee.cmd', ['server.coffee'], { stdio: ['pipe', 'pipe', 'pipe']);
特别是stderr
上的pipe
是问题,因为当子退出时,管道已满(或似乎来自第一个console.error
),因此下一个消息不会在子死亡时放入管道中。
我已经更新了nodemon,使其在使用pipe
时更聪明,因为在大多数情况下,在stdio
上使用process.stdout
工作得很好,并且还意味着这个原始示例脚本如您所期望的那样回显错误。
您提交的问题也已在nodemon@1.0.17
中结束。我应该补充一下,这个SO问题的标题是误导性的(它读起来好像nodemon隐藏了所有控制台输出)-它没有隐藏控制台输出-当进程崩溃时它正在丢失控制台输出。不过,它是固定的——耶!
我有一个暗示,但无法证明我的感觉。
使用coffee执行程序时,日志消息阻塞。在第5行发生错误时,已经向控制台发出了4个跟踪。
无论使用哪种监控工具,其原理几乎是相同的:生成一个子进程来托管应用程序并监控其生命周期。这意味着您的控制台输出从子进程重定向到显示它的主机进程。我敢打赌,故障的处理优先于日志消息,因此,主机进程在有时间显示剩余的日志之前切断了通道。
- 控制台返回var不是't定义,但它是
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 如何使用Protractor从Chrome控制台获取所有日志
- 为什么我能够从javascript控制台发送跨域ajax请求
- 当浏览器控制台未打开时,为什么要求会导致Internet Explorer 9超时
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- 按压“;输入“;将值打印到控制台日志
- 如何让JS脚本在导航后继续运行(谷歌chrome控制台)
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- PHP REST服务抛出异常——希望避免控制台错误
- js文件未加载js控制台say's”;不允许加载本地资源”;
- 如何在java中获得浏览器的java脚本控制台输出
- "资源不足错误“;当从Chrome控制台重复发出ajax请求时
- 如何使Visual Studio自动清除Javascript控制台
- Web控制台命令不起作用
- 只有当Javascript控制台在chrome上打开时,Javascript才能工作
- jQuery控制台错误:无法读取属性'top'的未定义
- 打印javascript控制台的堆栈跟踪
- 如何在调试模式停止后查看Visual Studio 2015 Javascript控制台
- 为什么控制台没有't使用输入的对象's的`toString`方法