如何将 chrome-aws-lambda 模块与 AWS lambda 函数一起使用?

Вов*_*лёв 2 amazon-web-services node.js aws-lambda serverless chrome-aws-lambda

我正在尝试使用 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 = {
    mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
    devtool: 'source-map',
    resolve: {
        extensions: ['.js', '.jsx', '.json', '.ts', '.tsx']
    },
    output: {
        libraryTarget: 'commonjs',
        path: path.join(__dirname, '.webpack'),
        filename: '[name].js'
    },
    target: 'node',
    externals: ['chrome-aws-lambda'],
    module: {
        rules: [
            {test: /\.tsx?$/, loader: 'ts-loader'}
        ]
    },
    plugins: []
}
Run Code Online (Sandbox Code Playgroud)

你能帮我解决这个问题吗?

Вов*_*лёв 5

所以,问题出在进口方面。我变了

import chromium from 'chrome-aws-lambda'
Run Code Online (Sandbox Code Playgroud)

const chromium = require('chrome-aws-lambda')
Run Code Online (Sandbox Code Playgroud)

错误消失了