运行 灯塔内部 Google 云函数
Run lighthouse inside Google Cloud Function
我正在尝试 运行 Lighthouse 在 Cloud Function 中。
我从 README.md 中复制了最简单的示例并添加了 '--headless'
选项。
但是,我收到此错误:
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
The environment variable CHROME_PATH must be set to executable of a build of Chromium version 54.0 or later.
云函数怎么可能做这样的事情?
这是我上传到云函数的代码:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
function launchChromeAndRunLighthouse(url, opts, config = null) {
return chromeLauncher.launch({chromeFlags: opts.chromeFlags}).then(chrome => {
opts.port = chrome.port;
return lighthouse(url, opts, config).then(results => {
return chrome.kill().then(() => results.lhr)
});
});
}
const opts = {
chromeFlags: ['--show-paint-rects','--headless']
};
exports.hello = async (req,res) => {
const results = await launchChromeAndRunLighthouse('https://www.google.com',opts);
// res.send(results);
}
我怀疑无法单独使用 Lighthouse,因为它需要设置 env var 以查找现有的 Chrome 可执行文件。我建议研究 puppeteer 的无窗口(无头)组合 Chrome,并使用 Lighthouse。
众所周知,Puppeteer 可以在 Cloud Functions 上工作,您应该可以使用网络搜索找到相关信息。
至于将两者结合起来,好像已经有一个库将它们结合起来了,所以我试试看:https://www.npmjs.com/package/google-lighthouse-puppeteer
我正在尝试 运行 Lighthouse 在 Cloud Function 中。
我从 README.md 中复制了最简单的示例并添加了 '--headless'
选项。
但是,我收到此错误:
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
The environment variable CHROME_PATH must be set to executable of a build of Chromium version 54.0 or later.
云函数怎么可能做这样的事情?
这是我上传到云函数的代码:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
function launchChromeAndRunLighthouse(url, opts, config = null) {
return chromeLauncher.launch({chromeFlags: opts.chromeFlags}).then(chrome => {
opts.port = chrome.port;
return lighthouse(url, opts, config).then(results => {
return chrome.kill().then(() => results.lhr)
});
});
}
const opts = {
chromeFlags: ['--show-paint-rects','--headless']
};
exports.hello = async (req,res) => {
const results = await launchChromeAndRunLighthouse('https://www.google.com',opts);
// res.send(results);
}
我怀疑无法单独使用 Lighthouse,因为它需要设置 env var 以查找现有的 Chrome 可执行文件。我建议研究 puppeteer 的无窗口(无头)组合 Chrome,并使用 Lighthouse。
众所周知,Puppeteer 可以在 Cloud Functions 上工作,您应该可以使用网络搜索找到相关信息。
至于将两者结合起来,好像已经有一个库将它们结合起来了,所以我试试看:https://www.npmjs.com/package/google-lighthouse-puppeteer