运行“ npm测试”时,没有console.log到STDOUT(开玩笑)

时间:2019-01-14 23:16:55

标签: javascript node.js testing npm jestjs

据我所知,console.log()应该可以正常运行,并且在运行脚本时将其打印到控制台的STDOUT。

但是在我的情况下,我将NPM配置为从外壳发出npm test时运行Jest,并且测试文件中的任何console.log()都不会在屏幕上打印任何内容。 我也尝试过使用process.stdout.write(),但是在运行npm test时仍然没有自定义输出。

我应该如何调试测试脚本中的内容? 我不知道这是Node,NPM还是Jest的问题。 有一个Jest issue看起来和我的相似,但是我仍然无法解决并无法输出一个简单的字符串。而其余的Jest输出将照常回显。

有人遇到过类似的问题吗?

编辑1: 我尝试运行npm test -- --runInBand,但没有显示日志。

注意:尝试重复运行该命令有时可以查看日志,但是随后的其余Jest输出将覆盖/隐藏该日志。

>

2 个答案:

答案 0 :(得分:2)

这不干净,但是我很幸运,希望它能对您有所帮助,直到发布修补程序:在日志被覆盖后再记录另外newline

console.log('I want to be seen!');
console.log('\n\n\n\n');

答案 1 :(得分:1)

从链接问题开始,因为问题已经持续了多年……

a pull request in the alpha release可以解决此问题。似乎在过去的几个小时内正在进行最后的提炼(请参见Github问题链接)。

但是我找到了最简单的解决方案:

  • 只需运行npm test -- --verbose=true,日志就会神奇地出现!

不会在任何情况下都可以解决;异步/多线程/等可能仍然存在问题(请报告您的经验,以便我更新答案);例如,在日志后添加process.exit(1)将会再次将其隐藏。

ctrl + c运行之前(按正确的时间...)尝试按process.exit()会显示该日志实际上已经存在并且已被覆盖。

我将用新闻更新答案,但这可能会帮助其他人开始使用Node / NPM / Jest设置!