node.js - Lambda 失败并显示 "Cannot find module..."

标签 node.js webpack aws-lambda aws-cloudformation serverless

我正在使用 Webpack 打包我的 lambda。我正在使用 CDK 部署它们。

但是,当通过 ApiGateway 测试它们时,我得到了这个:

Lambda execution failed with status 200 due to customer function error: Error: Cannot find module 'apollo-server-lambda'.

这是我的 Webpack 配置:

{
  mode: 'production',
  entry: {
    graphql: './src/lambdas/graphql.ts',
    cognito: './src/lambdas/cognito.ts',
    'smoke-detector': './src/lambdas/smoke-detector.ts',
  },
  output: {
    libraryTarget: 'commonjs',
    path: path.resolve(__dirname, "dist"),
    filename: '[name]/[name].js'
  },
  target: 'node',
  externals: [nodeExternals()],
  resolve: {
    extensions: ['.ts', '.js']
  },
  module: {
    rules: [
      loader({
        test: /\.ts$/,
        use: {
          loader: 'ts-loader',
          options: {
            getCustomTransformers: () => ({
              before: [graphqlTag.getTransformer()]
            })
          }
        }
      }),
      loader({
        test: /\.graphqls$/,
        use: {
          loader: 'graphql-tag/loader',
        }
      })
    ]
  },
  plugins: [
  ]
}

执行像 node graphql.js 这样的输出文件不会失败。 我做错了什么?

最佳答案

删除

externals: [nodeExternals()]

解决了问题。

它导致依赖项从 bundle 中排除。

关于node.js - Lambda 失败并显示 "Cannot find module...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60243309/

相关文章:

javascript - 带有 node.js 的 http 请求在发送后无法设置 header

node.js - Webpack 如何构建生产代码以及如何使用它

vue.js - 是否可以在运行时动态配置 vue-cli 中的 publicPath?

amazon-web-services - AWS Lambda 可以访问其他区域的 S3 存储桶吗?

javascript - 基于每个包排除 NPM 依赖项

javascript - 脚本有效但不适用于 node.js

node.js - 无法运行nodemon(语法错误: Unexpected token) on ubuntu

javascript - webpack:配置文件中 [ext] 之后的问号

amazon-web-services - Cognito 在通过电话确认之前更改电话号码

javascript - 如何使用 lambda 函数从 AWS s3 获取文本文件的内容?