据我所知,在运行脚本时,console.log()
应该可以毫无问题地打印到我的控制台的 STDOUT。
但在我的例子中,我将 NPM 配置为在从 shell 发出 npm test
时运行 Jest,并且测试文件中的任何 console.log()
都不会在屏幕上打印任何东西。
我也尝试使用 process.stdout.write()
但在运行 npm test
时我仍然没有得到自定义输出。
我应该如何调试测试脚本中的内容? 我不知道这是来自 Node、NPM 还是 Jest 的问题。 有一个 Jest issue看起来和我的很相似,但我仍然无法解决并输出一个简单的字符串;而其余的 Jest 输出则照常回显。
有人遇到过类似的问题吗?
编辑 1:
我尝试运行 npm test -- --runInBand
但未显示日志。
注意事项
尝试像这样重复运行命令
console.log('foo...');console.log('bar..');console.log('baz..');
有时我可以看到日志,但随后它会被以下 Jest 输出的其余部分覆盖/隐藏。
最佳答案
从链接的问题开始,因为这个问题已经存在多年了......
有a pull request in the alpha release这将解决这个问题。看起来最后的精炼是在过去几个小时内进行的(参见 Github 问题链接)。
但是我找到了适用于我最简单情况的解决方案:
- 只需运行启用详细模式,日志就会神奇地出现!
npm test -- --verbose=true
这不会在所有情况下都能解决;也许异步/多线程/等仍然会有问题(请报告您的经验,以便我更新答案);例如,在日志后添加一个 process.exit(1)
将再次隐藏它。
尝试在 process.exit()
运行之前按 ctrl + c
(在正确的时间...)将显示日志实际上存在并且正在覆盖。
我会用新闻更新答案,但这可能会帮助其他人开始使用 Node/NPM/Jest 设置!
关于javascript - 运行 "npm test"时没有 console.log 到 STDOUT(开 Jest ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190596/