1

nodejs4.x ランタイムにラムダ関数があります。エラーが原因でスクリプトの実行が停止した場合、たとえば.length、未定義のオブジェクトを取得しようとすると、スクリプトを再度開始することはできません。スクリプトが実行されて同じエラーが発生するわけでもなく、スクリプトは実行されません。ラムダ ハンドラー関数が 2 回目に呼び出されることはありません。

このラムダ関数は、Amazon Alexa のエンドポイントです。コード (zip ファイル) を再アップロードすると、システムが再び動作します。

これはnodejsの動作ですか?スクリプトが途中で終了してファイルが破損しているため、再度開始できませんか?

サーバーでエラーが発生すると、このメッセージが表示されますProcess exited before completing request

その後、後続のリクエストがタイムアウト制限に達します。

重要な編集 問題を NPM リクエストに特定しました。モジュールのロードが完了しません。

console.log('i see this message');
var request = require('request');
console.log('this never happens');
4

4 に答える 4

0

呼び出し時に Lambda 関数が失敗するためrequire('request')、プロジェクトが正しくデプロイされていないと思います。リクエストはNode.js 4.3.2 (現在の Lambda JavaScript ランタイム) の一部ではないため、Lambda 関数を使用してデプロイする必要があります。

次のことを確認してください。

  1. requireがファイルに追加されpackage.jsonます (たとえば、 を呼び出すことによって$ npm install require --save、詳細についてはnpm installを参照してください)。
  2. プロジェクト フォルダー (フォルダーを含む) を圧縮して、展開パッケージを作成しnode_modulesます。
  3. デプロイメント .zip が Lambda 関数にアップロードされていること。
于 2016-09-01T20:08:21.380 に答える