TypeError:AWS.DynamoDB.DocumentClient不是构造函数

时间:2017-04-18 06:11:06

标签: javascript node.js amazon-web-services amazon-dynamodb elastic-beanstalk

我尝试从aws-sdk使用Amazons DocumentClient for AWS.dynamodb。我还使用Amazon的Standard node.js VM:“64bit运行Node.js的Amazon Linux 2016.09 v4.0.1。”

在我的本地计算机上一切正常,但我收到以下错误消息:

TypeError: AWS.DynamoDB.DocumentClient is not a constructor

这是导致错误的行:

var docClient = new AWS.DynamoDB.DocumentClient();

我还尝试了各种教程使用的不同版本也失败了:

var docClient = new AWS.DynamoDB.DocumentClient({region: "eu-central-1"});

var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

我试着非常准确地遵循本指南: https://aws.amazon.com/de/blogs/developer/announcing-the-amazon-dynamodb-document-client-in-the-aws-sdk-for-javascript/

在我的本地机器上它没有问题。我可以毫无错误地连接到实时服务器或本地开发服务器。

没有DocumentClient的AWS.dynamodb也在使用实时服务器,所以我想一个选项就是完全删除DocumentClient。

我有一个package.json,它使用最新的aws-sdk:

{
  "name": "",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "aws-sdk": "latest",
[...]

我最好的猜测是,节点包有问题。我如何检查我的假设,如果正确,改变它的一些内容?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案! @SwarajGiri通过建议aws-sdk 2.2.15版指向了正确的方向。

我的问题是我的文件夹中有一个npm-shrinkwrap.json并且不知道它正在推翻package.json。 npm-shrinkwrap.json中的aws-sdk版本是2.1.39,不包括documentClient()。 Document Client was introduced in version 2.2.0

请注意,我跟随的node.js Elastic Beantalk with DynamoDB tutorial包含了这个有点过时的npm-shrinkwrap.json!

我希望通过回答我自己的问题不违反任何规则。