对不起,也许这是一个非常简单的问题,但是我找不到为什么它不能像在文档中描述的那样工作。
我在JavaScript服务器上使用AWS,并试图从ExpressJS服务器中获取一个DNS记录。AWS.credentials将从共享文件中提取。从控制台开始,一切都很好:
> aws route53 list-resource-record-sets --hosted-zone-id XXXXXXXXXX --start-record-name test.example.net. --start-record-type TXT --max-items 1
返回有效的记录对象。但JS AWS请求:
new AWS.Route53({}).listResourceRecordSets({
HostedZoneId: 'XXXXXXXX',
StartRecordName: 'test.example.net.',
StartRecordType: 'TXT',
MaxItems: '1'
}, function (error, data) {
if (error) {
console.log(error);
callback({error: error})
} else {
callback(data); //<--- empty data object
}
});
将在没有错误的情况下解析,但是使用空数据对象(我希望那里的反序列化响应,如描述的这里)。在network中,我可以看到HTTP响应返回200 OK并包含有效的xml数据。我做错了什么,为什么没有响应数据被传输到数据对象?
任何帮助都是非常感谢的!
更新:我使用的是NodeJS v5.1.0 + ExpressJS v4.13.3。这个版本的Node是否与AWS不兼容?(我没有在AWS站点上找到有关所需节点版本的信息)
发布于 2016-01-13 15:49:14
正如在github的aws主页上的类似问题中所描述的那样,这个问题是由节点检查器引起的。所以在我的例子中,是Node检查官v0.12.3。它真的摧毁了数据对象。如果我关闭了Gruntfile中的节点检查器,一切都可以正常工作。该模块的最后版本(编写时的版本为0.12.5)对此进行了修正。
解决方案:将节点检查器更新为最新版本。
https://stackoverflow.com/questions/34748685
复制相似问题