Node.js Lighthouse Node CLI返回错误的号码

Node.js Lighthouse Node CLI返回错误的号码,node.js,google-chrome-devtools,lighthouse,Node.js,Google Chrome Devtools,Lighthouse,我正在尝试通过Lighthouse Node CLI访问Node js中某个网站的性能评级。但我遇到了这个问题,在ChromeDevTools或GooglePageSpeed中,输出的分数远低于Lighthouse的分数。 例如: 在Chrome中,我的性能得分为97,并采用以下指标: 第一个满意的油漆:1.0 速度指数:1.0 最大含量油漆:0.99 互动时间:0.83 总阻塞时间:1.00 累计布局移位:0.99 而通过节点,我只获得了以下指标的66.05: 第一个满意的油漆:0.7

我正在尝试通过Lighthouse Node CLI访问Node js中某个网站的性能评级。但我遇到了这个问题,在ChromeDevTools或GooglePageSpeed中,输出的分数远低于Lighthouse的分数。


例如:

在Chrome中,我的性能得分为97,并采用以下指标:

  • 第一个满意的油漆:1.0
  • 速度指数:1.0
  • 最大含量油漆:0.99
  • 互动时间:0.83
  • 总阻塞时间:1.00
  • 累计布局移位:0.99
而通过节点,我只获得了以下指标的66.05

  • 第一个满意的油漆:0.7
  • 速度指数:0.7
  • 最大含量油漆:0.65
  • 互动时间:0.57
  • 总阻塞时间:0.03
  • 累计布局移位:1.0


我在MacOS 11.2.3和Windows上都试过了

  • Chrome版本:90.0.4430.85

  • 灯塔:7.2.0

  • Axe版本:4.1.2

运行时设置是两者的标准设置,并且相同。


提前感谢您的帮助!

以下是我基于此的代码:


从数字上看,您在CLI上使用的CPU似乎动力不足,或者有东西在消耗CPU周期。看看你的TBT分数——从100%到3%。由于TBT基本上是指您的站点的CPU密集程度,它要么看到一个完全不同的页面,以不同的顺序解析和执行该页面(如果您正在使用它,可能它不支持HTTP 2),要么CPU速度太慢。很难找出原因,但我90%确信这就是分数差异所在。尝试比较两者的完整结果,看看哪些审核项目不同。谢谢。我在另一台windows机器上再次检查,结果是正确的。是的,这似乎是节点模块和CPU的问题……刚刚看到,与DevTools相比,通过节点的CPU/内存功耗分数甚至还不到分数的一半。似乎是节点模块和苹果硅的某种问题?很可能它在苹果上运行单线程?这恐怕远远超出了我的技术知识,这是我唯一能想到的!
const lighthouse = require("lighthouse");
const chromeLauncher = require("chrome-launcher");


const lighthouseAudit = url => {
    return chromeLauncher.launch({chromeFlags: ['--headless']}).then(chrome => {
      const opts = {port: chrome.port};
      return lighthouse(url, opts).then(results => {
        return chrome.kill().then(() => results.report);
      });
    });
  };


lighthouseAudit("https://google.com").then(resultsJSON => {
    var results = JSON.parse(resultsJSON);
    const metricFilter = [
        "first-contentful-paint",
        "interactive",
        "largest-contentful-paint",
        "speed-index",
        "cumulative-layout-shift",
        "total-blocking-time"
      ];


    let resultsScore = [];
    for (let auditObj in results["audits"]) {
      if (metricFilter.includes(auditObj)) {
          resultsScore.push(new Array(auditObj, results.audits[auditObj].score));
      }
    }
    console.log(resultsScore);

    let score = (resultsScore[0][1]*0.15)+(resultsScore[1][1]*0.15)+(resultsScore[2][1]*0.25)+(resultsScore[3][1]*0.15)+(resultsScore[4][1]*0.25)+(resultsScore[5][1]*0.05);
    console.log("Score: " + score*100);
});