1

私はここで何かばかげたことをしていると確信しており、少なくとも明らかな何かを見逃しています。公式の AWS SDK モジュールで非常に基本的な例をいくつか実行するだけです。2 つの空のファイルを作成します。1 つは既存のより大きな Node.js プロジェクトのディレクトリ内にあり、もう 1 つはこの別のプロジェクトから離れた別のディレクトリにあります。両方のディレクトリには、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の依存関係でxml2js0.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 に答える