我有一个 Angular Universal 项目使用 SSR 部署到 AWS Lambda,但我还没有设法让 firebase 作为它的依赖项工作。控制台中的所有错误都与 firebase 依赖项及其依赖项有关。
方法 #1:包含 firebase 模块
package:
exclude:
- '!node_modules/firebase/**'
这增加了firebase,现在错误转移到无法找到firebase的依赖项等等。
方法#2:只包含所有节点模块
这是一个 Angular 项目,我有 600mb+ 的依赖项来构建应用程序,
方法 #3:在我的 Angular 'dist' 文件夹中安装 firebase。
这将引发运行时错误:
Error: Failed to load gRPC binary module because it was not installed for the current system\nExpected directory: node-v64-linux-x64-glibc\nFound: [node-v64-win32-x64-unknown]\nThis problem can often be fixed by running \"npm rebuild\" on the current system\nOriginal error: Cannot find module '/var/task/node_modules/grpc/src/node/extension_binary/node-v64-linux-x64-glibc/grpc_node.node'",
方法 #4:serverless-webpack
这会在sls deploy
说它找不到 webpack 配置时抛出错误,但它就在 serverlesss.yml 旁边的根目录中,并且它已经被 angular Universal 使用,我不能用不同的配置覆盖它 serverless-webpack 插件.
方法 #5:手动 Lambda 层
我尝试使用具有firebase作为依赖项的package.json创建一个层,运行npm install,制作包含该nodejs
文件夹的文件夹的存档node_modules
并将其作为层上传+手动添加到我的函数中。
与 #1 相同的错误,找不到 firebase 模块,这也将在我下次部署时被无服务器框架覆盖。
方法 #6:通过无服务器的 Lambda 层
我试图将这些文章拼凑在一起,以获得 第 1条、第 2条、第 3条的工作,并使用了这个 github中的示例,但用 firebase 切换了时刻。
但是它们都不起作用,无服务器配置:
layers:
firebaseLayer:
path: ../layers/firebase-layer
compatibleRuntimes:
- nodejs8.10
- nodejs10.x
package:
include:
- node_modules/**
会抛出:No file matches include / exclude patterns
const firebase = require('firebase');
我的端点处理程序内部也有。
我一直试图让这个工作整整两天,这已经令人沮丧了。任何帮助表示赞赏。