1

我确定我在这里做了一些愚蠢的事情,或者至少遗漏了一些明显的东西。只是在官方 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 将消息插入队列,它在两个文件中都有效,但问题文件再次接收到空响应对象,而“工作”文件接收通常的响应数据。

任何关于我忽略了什么愚蠢的事情的想法将不胜感激!

4

1 回答 1

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

多米尼克

于 2013-02-27T20:20:20.127 回答