我尝试从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",
[...]
我最好的猜测是,节点包有问题。我如何检查我的假设,如果正确,改变它的一些内容?
答案 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!
我希望通过回答我自己的问题不违反任何规则。