当我尝试访问我上传到 Vercel 服务器上的 API 时,出现此错误。
有没有人有同样的错误?
当我在本地运行它时,它工作正常。
2021-02-15T19:38:59.218Z 0109b575-a2e7-478e-aefe-aa3335b5b6b8 错误错误:无法启动浏览器进程! /tmp/chromium:加载共享库时出错:libnss3.so:无法打开共享对象文件:没有这样的文件或目录故障排除: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md at onClose (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js:193:20) 在接口处。 (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserRunner.js:183:68) 在 Interface.emit (events.js:327:22) 在 Interface.close (readline.js: 424:8) 在 Socket.onend (readline.js:202:10) 在 Socket.emit (events.js:327:22) 在 endReadableNT (internal/streams/readable.js:1327:12) 在 processTicksAndRejections (internal/进程/task_queues.js:80:21)
代码
import puppeteer, { Page } from 'puppeteer-core'
import chrome from 'chrome-aws-lambda'
export async function getOptions() {
const isDev = !process.env.AWS_REGION
let options;
const chromeExecPaths = {
win32: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
linux: '/usr/bin/google-chrome',
darwin: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
}
const exePath = chromeExecPaths[process.platform]
if (isDev) {
options = {
args: [],
executablePath: exePath,
headless: true
}
} else {
options = {
args: chrome.args,
executablePath: await chrome.executablePath,
headless: chrome.headless
}
}
return options
}
let _page: Page | null
async function getPage(): Promise<Page> {
if (_page) {
return _page
}
const options = await getOptions()
const browser = await puppeteer.launch(options)
_page = await browser.newPage()
return _page
}
export async function getScreenshot(html: string, { width, height } = { width: 800, height: 800 }) {
const page = await getPage();
await page.setContent(html);
await page.setViewport({ width, height });
const file = await page.screenshot({ type: 'png' });
return file;
}
原文由 Lucas Borim 发布,翻译遵循 CC BY-SA 4.0 许可协议
我遇到了同样的问题,puppeteer 在我的本地环境中运行正常,但是当我部署到 AWS EC2 时,我遇到了同样的错误 共享加载库 解决方案
对于那些在 Windows 环境中运行时可能遇到此问题的人,您可以尝试在从代码启动铬时传递 ignoreDefaultArgs: [’–disable-extensions’] 选项,即
这将停用 puppeteer 的默认行为,禁止禁用 chrome/chrome 通常使用的任何扩展。
Linux 和 MACOS 使用
导致此错误的问题
大多数情况下但并非所有情况都是由于缺少最新版本所需的依赖项造成的。好处是您可以轻松检查导致崩溃的缺失 chrome 依赖项。
ldd铬| grep 不是
如果您看到任何缺少的依赖项,请运行此命令以安装所有内容并重新启动您的应用程序。
瞧!一切都应该是固定的