我确定我在这里做了些蠢事,或者至少遗漏了一些明显的东西。只需在官方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将消息插入队列,它可以在两个文件中工作,但问题文件再次收到一个空响应对象,而“工作”文件接收通常的响应数据。
对于我所忽视的愚蠢事情的任何想法都将不胜感激!
答案 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
多米尼克