我正在使用 puppeteer 和 chrome-aws-lambda 在 AWS Lambda 中生成 pdf,直到最近它还可以与 nodejs 12.x、puppeteer v13.7.0 和 chrome-aws-lambda v10.1.0 配合使用。
\n最近我们将 nodejs 更新到 16.x,将 puppeteer 更新到 16.1.1(收到 AWS 更新节点版本的通知。)
\n现在此功能已停止工作,我遇到以下问题。
\nerror: Error: ENOENT: no such file or directory, mkdtemp 'undefined\\\\temp\\\\puppeteer_dev_chrome_profile-XXXXXX' {errno: -4058, code: 'ENOENT', syscall: 'mkdtemp', path: 'undefined\\\\temp\\\\puppeteer_dev_chrome_profile-XXXXXX', stack: 'Error: ENOENT: no such file or directory, mkd\xe2\x80\xa6ned\\\\temp\\\\puppeteer_dev_chrome_profile-XXXXXX'', \xe2\x80\xa6}\ncode:\n'ENOENT'\nerrno:\n-4058\npath:\n'undefined\\\\temp\\\\puppeteer_dev_chrome_profile-XXXXXX'\nsyscall:\n'mkdtemp'\nmessage:\n'ENOENT: no such file or directory, mkdtemp 'undefined\\\\temp\\\\\nRun Code Online (Sandbox Code Playgroud)\n 我正在尝试使用 chrome-aws-lambda by node.js lambda 函数从 HTML 生成 pdf。我使用本手册创建了一个图层。另外,我尝试在我的函数中使用现有层,但总是收到错误:Cannot read property 'puppeteer' of undefined。我的处理程序看起来像:
import chromium from 'chrome-aws-lambda';
export const handler: Handler = async (event: AppsyncEvent) => {
...
try {
browser = await chromium.puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: chromium.headless
});
....
} finally {
....
}
}
Run Code Online (Sandbox Code Playgroud)
serverless.yml 中的 webpack 设置
webpack:
webpackConfig: ../webpack.config.js
includeModules:
packagePath: '../package.json'
forceInclude:
- source-map-support
forceExclude:
- aws-sdk
- chrome-aws-lambda
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
module.exports = { …Run Code Online (Sandbox Code Playgroud) amazon-web-services node.js aws-lambda serverless chrome-aws-lambda