You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda中运行带experimental-edge runtime的Next.js并生成OG图片

Next.js 13 + @vercel/og 在AWS Lambda中运行Edge Runtime接口500错误问题

我在AWS Lambda中部署带OG图片生成逻辑(依赖@vercel/og的ImageResponse)的Next.js 13.0.6项目,本地开发和生产构建后直接运行都正常,但调用Lambda处理程序时,依赖runtime: 'experimental-edge'的接口始终返回statusCode: 500错误,问题应该出在Edge Runtime的配置上。

我的部署流程与代码

  1. 执行next build构建项目,next.config.js中配置了output: 'standalone',生成.next/standalone目录
  2. 在standalone目录下编写handler.js作为Lambda入口:
const { parse } = require('url');
const NextServer = require('next/dist/server/next-server').default
const serverless = require('serverless-http');
const path = require('path');
process.env.NODE_ENV = 'production'
process.chdir(__dirname)

const currentPort = parseInt(process.env.PORT, 10) || 3000

const nextServer = new NextServer({
  hostname: 'localhost',
  port: currentPort,
  dir: path.join(__dirname),
  dev: false,
  customServer: false,
  conf: {...} // 从同目录下的server.js中复制配置内容
});


const requestHandler = nextServer.getRequestHandler();

// 将Lambda事件转换为Next服务器可处理的HTTP请求
const handler = serverless(async (req, res) => {
  try {
    await requestHandler(req, res);
  }catch(err){
    console.error(err);
    res.statusCode = 500
    res.end('internal server error')
  }
});

module.exports = {
  handler
}

奇怪的现象

用local-lambda本地测试Lambda处理程序,报错和部署到AWS上一致。但.next/standalone目录自带的server.js,配置和我的handler几乎一样,只是多启动了一个HTTP服务器,却能正常处理所有接口请求,包括OG图片生成的Edge接口。

错误日志更新

更新1:初始AWS Lambda错误日志

ERROR  [Error [CompileError]: WebAssembly.compile(): Compiling function #64 failed: invalid value type 'Simd128', enable with --experimental-wasm-simd @+3457 ]

更新2:切换Node版本后的新错误

把AWS Lambda的Node版本换成16后,上面的错误消失,但出现新的报错:

{
  "errorType": "Error",
  "errorMessage": "write after end",
  "trace": [
    "Error [ERR_STREAM_WRITE_AFTER_END]: write after end",
    "    at new NodeError (node:internal/errors:372:5)",
    "    at ServerlessResponse.end (node:_http_outgoing:846:15)",
    "    at ServerlessResponse.end (/var/task/node_modules/next/dist/compiled/compression/index.js:22:783)",
    "    at NodeNextResponse.send (/var/task/node_modules/next/dist/server/base-http/node.js:93:19)",
    "    at NextNodeServer.handleRequest (/var/task/node_modules/next/dist/server/base-server.js:332:47)",
    "    at processTicksAndRejections (node:internal/process/task_queues:96:5)",
    "    at async /var/task/index.js:34:5"
  ]
}

内容的提问来源于stack exchange,提问作者romanlv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:05:24