在调查了几个小时后,我发现了以下问题:
我的设置:
- 角度命令行界面 6.0.1
- 角材料 6.0.2
- 无服务器 (+serverless-webpack 5.1.5, +serverless-apigw-binary(
构建步骤:
- 构建(浏览器应用(-使用默认 CLI 配置>
- 使用 Webpack 构建 SSR 服务器
- 构建 Lambda 服务器并将所有源捆绑到无服务器包中
目前为止,一切都好。在我开始使用MatBottomSheet之前,一切都很正常。 当我在我的组件中注入此服务时,似乎没有什么特别的。
当地没有问题,为发展服务(工作(。创建生产版本并在本地托管它也有效。
将其部署到 lambda 时发生了奇怪的事情。部署似乎没问题。但是当我通过 AWS 网关调用 lambda 方法时 -> 来访问该应用程序。 我遇到内部服务器错误。
在 lambda 日志中,我看到我超时了。(我试图将超时期限更改为 10 秒,因此将超时期限设置为短时间不是问题(。通常渲染整个网站需要 70 毫秒,但很好。
看起来有一个无限循环/死锁或循环调用等。 无论材料代码中有什么,当为 lambda 打包无服务器时。
我花了几个小时才找到实际问题所在。贝克。CloudWatch 和所有其他 AWS 日志都是 rly。超时时静默。当我从我的应用程序中删除MatBottomSheet时,一切又恢复了。
仅供参考:我不必直接使用MatBottomSheet。将其注入组件就足够了。在不注入服务的情况下导入模块也有效。
我已经尝试过的:
通常我的lambda服务器代码使用expressjs,它包装在aws-express中。
所以我调整了 expressjs 代码 -> 只是为了返回静态文件,而不渲染任何内容。 -> 结果没有改变,我超时了。
我尝试的下一件事:在本地调用 lambda 方法(使用无服务器( 一切都按预期工作。
我在本地使用了相同的 Nodejs 版本 (8.10(,该版本与 AWS Lambda 使用的版本相同。 ->超时错误...
如果有人知道如何解决这个问题,那就太棒了。
我的解决方法:使用不带 SSR 的 lambda,或者不使用 lambda...
谢谢
我解决了问题,想分享我的结果。希望没有人会再遇到这个问题。
调试了一整天后,一些捆绑的代码。问题是:我的lambda函数必须减少内存
我为我的lambda函数使用了128Mb内存。即使我将超时增加到 60 秒,这里的奇怪事情也是如此。我仍然收到超时错误。
将内存增加到192Mb后,该方法在1.5秒内完成。
希望亚马逊能够改善他们的错误输出。似乎我的lambda函数从未完成,在内存不足时运行,这会导致超时