AWS Lambda + Angular Web 应用程序抛出“错误:找不到模块'@vendia/serverless-express'”

Posted

技术标签:

【中文标题】AWS Lambda + Angular Web 应用程序抛出“错误:找不到模块\'@vendia/serverless-express\'”【英文标题】:AWS Lambda + Angular web app throwing "Error: Cannot find module '@vendia/serverless-express'"AWS Lambda + Angular Web 应用程序抛出“错误:找不到模块'@vendia/serverless-express'” 【发布时间】:2021-04-03 09:30:26 【问题描述】:

我正在尝试按照教程 https://medium.com/better-programming/getting-started-with-serverless-angular-universal-on-aws-lambda-8754bcc4dc19 在 AWS 无服务器 Lambda 上部署 Angular Web 应用程序

直到上周它工作正常,但开始抛出错误“错误:找不到模块'@vendia/serverless-express'”,即使任何地方都没有提到'@vendia/serverless-express'。生成的 lambda.js 使用'aws-serverless-express'。

通过 npm 安装“@vendia/serverless-express”,它被添加到 package.json。部署post那个,还是报错。

重现步骤:

    确保 Angular 版本为 7 或更低,因为工具包不适用于更高版本 ng new project-name --style css --routing false cd 项目名称 ng 添加@ng-toolkit/universal@7.1.2 npm run build:prod npm 运行服务器 ng 添加@ng-toolkit/serverless@8.1.0 npm i serverless-api-compression npm run build:serverless:deploy

如果需要任何进一步的信息,请告诉我。提前致谢!

【问题讨论】:

【参考方案1】:

aws-serverless-express 有 rebranded to @vendia/serverless-express。新路径尚未包含在 ng-toolkit 的 serverless-aws.yml 文件中,这就是导致问题的原因。

在serverless.yml excludes 中添加以下内容可以解决问题。

- '!node_modules/@vendia/**'

最终结果会是这样的

package:
  exclude:
   - src/**
   - node_modules/**
   - firebug-lite/**
   - e2e/**
   - coverage/**
   - '!node_modules/@vendia/**'
   - '!node_modules/aws-serverless-express/**'
   - '!node_modules/binary-case/**'
   - '!node_modules/type-is/**'
   - '!node_modules/media-typer/**'
   - '!node_modules/mime-types/**'
   - '!node_modules/mime-db/**'

【讨论】:

以上是关于AWS Lambda + Angular Web 应用程序抛出“错误:找不到模块'@vendia/serverless-express'”的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Cloud Function 或 AWS Lambda 上部署 Universal Angular

在 Angular 11 中,如何通过 API Gateway 将应用程序/json HTTP POST 到 AWS Lambda?

从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数

使用具有 Web 身份的假定角色执行 AWS Lambda

在 AWS lambda Web 控制台上测试 Apollo graphql 查询

如何从 AWS Lambda .Net Core 应用程序 API 连接到 AWS RDS SQL Server?