将无服务器 next.js 反应应用程序部署到 AWS Lambda,得到 "message":"Internal server error"

Posted

技术标签:

【中文标题】将无服务器 next.js 反应应用程序部署到 AWS Lambda,得到 "message":"Internal server error"【英文标题】:Deploying a serverless next.js react app to AWS Lambda, getting "message": "Internal server error"将无服务器 next.js 反应应用程序部署到 AWS Lambda,得到 "message":"Internal server error" 【发布时间】:2020-05-19 22:10:47 【问题描述】:

我一直在尝试将一个简单的无服务器 React.js Next 应用程序部署到 AWS Lambda。在 Node.js 中部署应用程序时一切正常,AWS CloudFormation 状态为绿色 UPDATE_COMPLETE。

但是,当我访问端点链接时,我得到了

"message": "Internal server error"

不用说,我是新手,我只是想在运行无服务器应用程序的情况下运行我的第一个应用程序。这是我遵循的教程:https://statsbot.co/blog/a-crash-course-on-serverless-side-rendering-with-reactjs-nextjs-and-aws-lambda/,但我禁用了无服务器域管理器,因为我对任何给定域都很好,我只想先让一个超级基本的 React Next 应用程序工作,然后考虑更复杂的步骤.

我更详细地检查了 CloudWatch 中的错误,这是它返回给我的内容: 2020-02-04T05:21:27.230Z undefined ERROR Uncaught Exception


    "errorType": "Runtime.UserCodeSyntaxError",
    "errorMessage": "SyntaxError: missing ) after argument list",
    "stack": [
        "Runtime.UserCodeSyntaxError: SyntaxError: missing ) after argument list",
        "    at _loadUserApp (/var/runtime/UserFunction.js:98:13)",
        "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
        "    at Object.<anonymous> (/var/runtime/index.js:43:30)",
        "    at Module._compile (internal/modules/cjs/loader.js:956:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)",
        "    at Module.load (internal/modules/cjs/loader.js:812:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:724:14)",
        "    at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)",
        "    at internal/main/run_main_module.js:17:11"
    ]

并以此结束:发生未知应用程序错误 Runtime.UserCodeSyntaxError

Unknown application error occurred
Runtime.UserCodeSyntaxError

据我了解,IAM 角色配置正确,因为所有内容都正确上传到 AWS。

我希望我能在这个问题上得到一些帮助。非常感谢!

【问题讨论】:

向我们展示 Cloudwatch 日志。 刚刚更新了我的帖子,希望对你有帮助! 确保您的本地节点和 npm 版本与 AWS lambda 节点版本匹配。 感谢您的建议 - 本地节点版本与 AWS Lambda 匹配,但我在哪里查看 Lambda 的 npm 版本? 我在安装无服务器仪表板时发现了更多关于错误的信息。它说问题在于此文件中的“缺少(参数列表后”):/var/task/serverless_sdk/index.js,但是,该文件不在我的本地驱动器上。是错误还是我缺少什么? 【参考方案1】:

我遇到了同样的问题。我认为这是因为 Lambda 不支持 ES6 import 语句,如 here 所述

【讨论】:

【参考方案2】:

在使用 api-gateway 作为端点测试我的 lambda 应用程序时,我收到了相同的错误消息 "message": "Internal server error"。我在这里找到了答案:https://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/

在我的例子中,我不得不重组 mysql 查询以 JSON 格式输出正文,希望这对你有所帮助。

【讨论】:

以上是关于将无服务器 next.js 反应应用程序部署到 AWS Lambda,得到 "message":"Internal server error"的主要内容,如果未能解决你的问题,请参考以下文章

将 Next.js 部署到 Apache 服务器

使用 Github Actions 将 Next.js 部署到 Azure 应用服务的问题

在页面加载时将道具传递给子组件 - 与 next.js 做出反应

如何配置 webpack 以使用 css-modules 为 Next.js 应用程序构建反应组件库?

使用现有函数将 Next.js 应用部署到 Firebase Functions

next js的两种部署方式