[英]Puppeteer production to Vercel performance issues Next.js
我正在尝试将我的网站推送到 prod,但是 memory 太大或者性能太慢并返回 504 状态。 根据 vercel 这是因为请求时间太长? 我是木偶操纵者的新手,已经尝试了一切,但我不明白为什么它在本地有效但在产品中无效。
const chrome = require("chrome-aws-lambda");
export default async function handler(req, res) {
try {
const browser = await chrome.puppeteer.launch(
process.env.NODE_ENV === "production"
? {
args: chrome.args,
executablePath: await chrome.executablePath,
headless: true,
}
: {}
);
const aboutBlankPage = (await browser.pages())[0];
if (aboutBlankPage) {
await aboutBlankPage.close();
}
const page = await browser.newPage();
await page.goto("https://mars.nasa.gov/msl/weather/");
const nasaWeatherDataScrape = await page.evaluate(() => {
const high = Array.from(document.querySelectorAll(".celsius .high")).map(
(x) => x.innerText
);
const low = Array.from(document.querySelectorAll(".celsius .low")).map(
(x) => x.innerText
);
return {
high,
low,
};
});
console.log(nasaWeatherDataScrape, "in");
res.json(nasaWeatherDataScrape);
const newPage = (await browser.pages())[0];
await newPage.close();
} catch (error) {
console.log(error);
res.status(400).json({
message: error.message,
});
}
}
这是因为默认的 Chromium package 超过了 Vercel 上的 50MB function 大小限制。
您必须在低于 Vercel 服务器限制的版本中故意添加chrome-aws-lambda
。 我怀疑您的问题具体是chrome-aws-lambda
版本。
请尝试
npm i --save chrome-aws-lambda@^8.0.2 puppeteer-core@^8.0.0
这是一个很好的教程,解释了这个过程。 https://gist.github.com/kettanaito/56861aff96e6debc575d522dd03e5725
以及一个简化的工作示例。 https://gist.github.com/agungjk/ff542367470d156478f7381af2cf7e60
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.