2012-04-06 10 views
2

Ich versuche einen sehr einfachen Test von Amazon SimpleDB zu erhalten, der mit Node.js/Express läuft. Dies ist der Code Ich verwende (AWS Schlüssel/geheimen hygienisiert, natürlich):Node.js + Express + simpledb; "TypeError: Die Eigenschaft 'Errors' von null kann nicht gelesen werden, wenn ich Domains auflisten will

var express = require('express'); 
var simpledb = require('simpledb'); 

var app = express.createServer(); 
var sdb = new simpledb.SimpleDB(
     {keyed:'MYKEY', secret:'MYSECRET'}, simpledb.debuglogger); 

app.get('/', function(req, res) { 
     console.log("about to list domains..."); 
     sdb.listDomains(function(error, result, meta) { 
       console.log("listing domains, I think?"); 
     }); 
}); 

app.listen(8888); 

Dies ist der Fehler Ich erhalte:

DEBUG: simpledb: 2012-04-06T01:34:24.856Z create {"keyid":"MYKEY","secret":"MYSECRET","secure":false,"consistent":true,"test":false,"maxtry":null,"expbase":null,"delaymin":null,"delayscale":null,"randomdelay":null} {"secure":false,"host":"sdb.amazonaws.com","path":"/","version":"2009-04-15","port":80} 
about to list domains... 
DEBUG: simpledb: 2012-04-06T01:34:29.253Z request 1333676069253 ListDomains {} 
DEBUG: simpledb: 2012-04-06T01:34:29.387Z handle 1333676069253 ListDomains {"Action":"ListDomains","Version":"2009-04-15","SignatureMethod":"HmacSHA256","SignatureVersion":"2","Timestamp":"2012-04-06T01:34:29.253Z","AWSAccessKeyId":"MYKEY","Signature":"AWSSIGNATURE"} 1 false null 

/home/rob/node_modules/simpledb/lib/simpledb.js:136 
    if(res.Errors) { 
     ^
TypeError: Cannot read property 'Errors' of null 
    at [object Object].handle (/home/rob/node_modules/simpledb/lib/simpledb.js:136:12) 
    at /home/rob/node_modules/simpledb/lib/simpledb.js:188:18 
    at Parser.<anonymous> (/home/rob/node_modules/simpledb/node_modules/aws-lib/lib/aws.js:81:13) 
    at Parser.emit (events.js:67:17) 
    at Object.onclosetag (/home/rob/node_modules/simpledb/node_modules/aws-lib/node_modules/xml2js/lib/xml2js.js:120:24) 
    at emit (/home/rob/node_modules/simpledb/node_modules/aws-lib/node_modules/sax/lib/sax.js:148:32) 
    at emitNode (/home/rob/node_modules/simpledb/node_modules/aws-lib/node_modules/sax/lib/sax.js:152:3) 
    at closeTag (/home/rob/node_modules/simpledb/node_modules/aws-lib/node_modules/sax/lib/sax.js:226:5) 
    at Object.write (/home/rob/node_modules/simpledb/node_modules/aws-lib/node_modules/sax/lib/sax.js:567:29) 
    at Parser.<anonymous> (/home/rob/node_modules/simpledb/node_modules/aws-lib/node_modules/xml2js/lib/xml2js.js:145:29) 

Ich bin ziemlich neu in Knoten. js, das simpledb-Modul und SimpleDB selbst, aber das scheint mir ein Fehler im simpledb-Modul zu sein. Ich kann nicht herausfinden, was ich sonst falsch mache - ich bin zuversichtlich, dass mein Schlüssel/Geheimnis gültig ist (wie ich getestet habe, mit beiden Set ungültig, getrennt und zusammen, und ich bekomme tatsächliche Fehler von Amazon, die darauf hinweisen Schlüssel/Geheimnis sind ungültig).

Dieser Fehler hat mich jedoch ratlos. Irgendwelche Ideen?

Antwort

1

Dies erwies sich als ein Abhängigkeitsproblem im SimpleDB Knotenmodul sein:

Hi - this seems to have been caused by the latest version of a dependent lib - I've rebuilt and publish a new version 0.0.8 - please let me know if this works - thanks!

Source. Es fixiert, da wurde.

0

FYI - Seit Ihrem ursprünglichen Post hat AWS das offizielle SDK für Node.js veröffentlicht. http://docs.aws.amazon.com/nodejs/latest/dg/nodejs-dg-examples.html

var AWS = require('aws-sdk'); 
AWS.config.update({region: 'us-east-1'}); 

var db = new AWS.SimpleDB(); 
db.client.listDomains(function(error, data) { 
    if (error) { 
    console.log(error); 
    } else { 
    console.log(data); 
    } 
});