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

Node 18.13.0无法本地使用DynamoDB问题求助

Node 18.13.0下本地DynamoDB连接失败(Node16正常)的解决方法

核心原因

Node.js 18开始,AWS SDK默认使用fetch作为HTTP客户端,其对本地服务的连接处理逻辑与旧版http模块存在差异,导致serverless-dynamodb-local的连接报错。

解决方案

1. 强制AWS SDK使用传统HTTP客户端

修改DynamoDB初始化代码,指定使用http模块的Agent:

var dynamoDbCreation = new AWS.DynamoDB({
  region: 'localhost',
  endpoint: 'http://localhost:8005',
  httpOptions: {
    agent: new (require('http').Agent)({
      keepAlive: true,
      rejectUnauthorized: false
    })
  }
});

或者在启动Serverless服务时添加环境变量,强制SDK使用Node.js原生HTTP客户端:

AWS_SDK_HTTP_EXECUTION_ENV=node sls offline start

2. 升级serverless-dynamodb-local插件

旧版本插件可能存在Node18兼容性问题,执行以下命令升级:

npm update serverless-dynamodb-local --save-dev

3. 调整DynamoDB绑定地址

在serverless.yml的custom.dynamodb.start中添加host: 0.0.0.0,让服务绑定到所有网卡,避免localhost解析异常:

custom:
  dynamodb:
    start:
      port: 8005
      host: 0.0.0.0

连接代码的endpoint可对应改为http://0.0.0.0:8005,或保持localhost(需确保系统localhost解析正常)。

4. 验证DynamoDB服务状态

启动sls offline后,用curl访问服务地址确认是否运行:

curl http://localhost:8005

若返回{"message":"Unsupported Operation"},说明服务正常;若无法访问,检查端口是否被占用,或插件是否正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:31:34