console.log 没有从事任何业力项目

console.log not working on any karma project

更新:tl;博士;我更新了我的 npm 包,在 karma 中再也看不到任何 console.log 输出。看起来这是 b/c 的行为更改,仅在 LOG_DEBUG 级别显示 console.log 输出并在 LOG_INFO 隐藏它。该更改是何时进行的,是否有恢复的方法?

原文:当我从 windows 命令提示符 运行 karma 时,我看不到 console.log 的输出。我曾经在很多项目中看到它很好,但现在它突然在我的任何项目中都不起作用。这似乎在我 运行 npm update 在一个项目中发生了变化。我没有 npm update 任何其他项目,但它们都停止工作了。

我用一个干净的项目创建了一个 MCVE,但我仍然看到相同的行为。这是我的干净项目中已安装软件包的列表(npm list 的输出)

C:\...\mvce>npm list
mvce@1.0.0 C:\...\mvce
+-- jasmine-core@2.5.2
+-- karma@1.5.0
+-- karma-chrome-launcher@2.0.0
+-- karma-jasmine@1.1.0
+-- karma-phantomjs-launcher@1.0.2
`-- phantomjs@2.1.7

这是配置代码

karma.conf.js

module.exports = function(config) {
    config.set({
        autoWatch: false,
        singleRun: true,
        basePath: ".",
        frameworks: ["jasmine"],
        logLevel: "INFO",
        browsers: ["PhantomJS", "Chrome"],
        files: ["test.js"]
    });
};



test.js

describe("describe", function(){
    it("it", function(){
        console.log("test");
    });
}); 

请注意,我已经尝试将这两个添加到我的 karma.conf.js 中。他们没有区别。

        client: {
            captureConsole: true
        }

        // or

        loggers: [
            { type: "console" }
        ]

注意:我在 karma github 上看到 this issue,那里的建议 none 有帮助。此外,它描述了一个带有 mocha 的设置,我正在使用 jasmine - 官方解决方法是使用我尝试过的 captureConsole

我还为这个问题创建了一个gist

环境信息:

看起来 karma 在 v1.5.0 中添加了一个功能来按日志级别过滤控制台捕获。这是 link 到 git pull request and the code changes 显示发生了什么。我在文档中找不到有关此新功能的任何更新。根据代码更改,这里是新规则

您可以在您的 karma conf 文件中配置 browserConsoleLogOptions 以指定您的终端输出中应显示哪些消息。设置 level 属性 以指定应显示的最大级别。要显示所有消息,请将 level 设置为空字符串。

对于我的情况,我需要这样设置:

browserConsoleLogOptions: {
    terminal: true,
    level: ""
}

更新:open git issue 正在讨论这个问题。 karma 1.5 中实际上有两个变化在这里很重要。

  1. 他们更改了日志消息的严重性顺序,因此 LOG == DEBUG。使用的严重性 LOG > INFO。这意味着任何将日志级别设置为 INFO 的项目都会在旧版本中显示 console.log 消息,而不会在新系统中显示它们。
  2. 如上所述,他们使用 browserConsoleLogOptions 添加了对按日志级别过滤控制台的支持。