Node.js AWS SDK请求不在一个文件中接收响应数据..而不是另一个文件

时间:2013-02-27 18:43:31

标签: node.js amazon-web-services

我确定我在这里做了些蠢事,或者至少遗漏了一些明显的东西。只需在官方AWS SDK模块上运行一些非常非常基本的示例。我创建了两个空文件,一个在现有较大的Node.js项目的目录中,另一个在远离另一个项目的另一个目录中。两个目录都包含一个由NPM创建的node_modules目录,其中包括aws-sdk模块,在两种情况下都是相同的版本,0.9.5-pre.6。

在两个空文件中,我输入以下代码:

// Include the AWS module
var AWS = require('aws-sdk');

AWS.config.update({
  accessKeyId: 'OUR_SECURITY_KEY',
  secretAccessKey: 'OUR_ACCESS_KEY'
});
AWS.config.update({region: 'OUR_REGION'});

// Create a Simple Queue Service instance
var sqs = new AWS.SQS();

// Retrieve a list of available queues on our account
sqs.client.listQueues(function (err, data) {
  if (err) {
    console.log(err);
  }
  else {
    console.log(data);
  }
});

在我们的帐户中检索SQS中的队列列表只需要一段非常简单的代码。对于记录,如果我创建一个S3客户端并尝试检索S3存储桶列表,结果是相同的。

当我在另一个项目的目录中运行文件时......

node testfile.js

...我在终端窗口看到响应数据......

{
  ResponseMetadata: {
    RequestId: 'SOME_REQUEST_ID'
  },
  QueueUrls: [ 'THE_CORRECT_URL_OF_MY_QUEUE' ]
}

......这就是我想要的。如果我对其他目录中的文件执行相同的操作,我会得到一个空对象...

{}

这似乎是这种情况,或者至少在我尝试过的所有不同请求中都是类似的。如果我尝试sendMessage将消息插入队列,它可以在两个文件中工作,但问题文件再次收到一个空响应对象,而“工作”文件接收通常的响应数据。

对于我所忽视的愚蠢事情的任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:1)

只是遇到了同样的问题(所有请求都返回{})。问题是XML解析 - 即xml2js。我在aws-sdk依赖项中手动替换了xml2js 0.2.5和0.2.4。这解决了我的问题。

编辑:

再次将xml2js更新为最新版本,问题似乎已修复:

https://github.com/aws/aws-sdk-js/issues/69

https://github.com/Leonidas-from-XIV/node-xml2js/issues/76

多米尼克