【问题标题】:AWS Lambda + Serverless, where/how to deploy js module that couldn't be bundled?AWS Lambda + Serverless,在哪里/如何部署无法捆绑的 js 模块?
【发布时间】:2019-12-22 23:13:17
【问题描述】:

我有一个 Angular 8 + Universal (SSR) + Serverless 应用程序。不幸的是,它仍在使用一些 firebase 功能。我在构建项目时无法捆绑 firebase,我已在 webpack 配置中将其排除在外:

  externals: [
    /^firebase/
  ],

现在如何提供/添加此依赖项以使我的功能正常工作?

在当前状态下,应用:

  • 使用ng serve工作
  • 作为静态托管工作
  • 服务过的作品 作为本地服务器的 SSR
  • 通过serverless-offline工作 插件

只有在实际部署到 lambda 时才会出现错误:

{
    "errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module 'firebase/app'",
    "stack": [
        "Runtime.ImportModuleError: Error: Cannot find module 'firebase/app'",
        "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
        "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
        "    at Object.<anonymous> (/var/runtime/index.js:36:30)",
        "    at Module._compile (internal/modules/cjs/loader.js:776:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)",
        "    at Module.load (internal/modules/cjs/loader.js:653:32)",
        "    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:585:3)",
        "    at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)",
        "    at startup (internal/bootstrap/node.js:283:19)"
    ]
}

如何在 aws lambda 中添加此依赖项?

【问题讨论】:

    标签: aws-lambda angularfire2 serverless angular-universal aws-serverless


    【解决方案1】:

    我不确定您为什么不能捆绑 Firebase 模块,但您可以部署带有所有必需 Firebase 依赖项的 Lambda layer 并将其添加到您的函数中。

    您可以查看示例 repo here

    【讨论】:

    • 这是一个带有角度通用/SSR 的错误,它会抛出一个错误,并且在关于它的主 github 线程上,人们说只是将它作为“外部”——我已经添加了关于它类似于我的 yml 中的 aws-express,包括它,例如:'!node_modules/firebase/**' 并且它已经工作但之后它要求 tslib、@firebase/app 并且我一直在那里添加依赖项,这是正常行为吗?
    • 我很难理解您的确切配置。也许您可以在这里分享您的代码或使用 GitHub 存储库?
    • 遗憾的是,这个项目的 repo 必须是私有的——不过,我在确定我的问题方面取得了一些进展:默认情况下,一个有角度的通用应用程序将捆绑运行它需要的所有依赖项,但由于 firebase 不是“捆绑”的一部分,因此需要将其添加为外部依赖项。我得到的所有错误都是针对“firebase”npm 模块的依赖关系,然后是它们的依赖关系。现在我正在研究如何捆绑这些依赖项或以某种方式在该模块的函数上运行 npm install
    • 最终也以此为基础制作了一个图层
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2018-07-06
    • 2020-10-08
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多