問題タブ [node-request]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
507 参照

node.js - ファイルのストリーミング/パイピング中にメモリ不足が原因で NodeJS が強制終了されることがある

問題

リクエストモジュールを備えたNodeJSサーバーがあります。ファイルを提供するためにリクエスト を使用pipe()します。

時々、アプリが例外をスローし、すべてのダウンロードがキャンセルされ、アプリを再起動する必要があります:

メモリ不足: プロセス 9342 (nodejs) スコア 793 を強制終了するか、子を犠牲にし
ます プロセス 9342 (nodejs) を強制終了します

サーバーが予期せず終了したときに (childprocess と fork を使用して) 自動的に再起動する別のスクリプトを作成しましたが、このエラーがスローされることがあります。

致命的なエラー: CALL_AND_RETRY_2 割り当てに失敗しました - プロセスがメモリ不足です


サーバー データ
RAM: 500MB (これは多くないことはわかっていますが、安価です)
Ubuntu 12.04.5 LTS

NodeJS バージョン: v0.10.36

仮定

  1. 並行ダウンロードが多すぎる
  2. RAMに関連するパイプに問題があります

1について:
誰かが大きなファイルをダウンロードすると、その一部がRAMにロードされます(これについては何も知りません。一度に20MBと言います。間違っている場合は修正してください)。400MB が利用可能で、同じダウンロード速度で 20 の現在のダウンロードがある場合、RAM に一度に 400MB 以上をロードできないため、サーバーがクラッシュします。

2 について:
さらにpipe()、次のコードを使用して、現在のダウンロードとキャンセルされたダウンロードを追跡します。

が正しく閉じず、pipe()使用していた RAM がクリアされません。

質問

私の仮定のいずれかが正しい場合、どうすればそれを修正できますか? そうでない場合、原因はどこにあるのでしょうか(NodeJS/リクエストモジュール/コードが間違っているか悪いか、より良い方法はありますか)?

完全なコード

0 投票する
1 に答える
7633 参照

node.js - GET リクエストを発行し、ノード Stream を取得します

リクエストformDataを使用して取得した画像からのストリームとして送信しようとしています

問題は、リクエストの後にリクエストが発火することformDataです。画像リクエストをパイプして認識する方法はありますか? formDataしかし、 ?にパラメーターを自由に追加できます。

例えば:

発射方法:

request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg') そのため、応答を使用できますreq

更新: http://visual-recognition-demo.mybluemix.net/images/horses.jpg応答Content-Lengthでヘッダーが欠落しているようで、 取得するのは

Transfer-Encoding: chunked

詳細はこちら

0 投票する
1 に答える
839 参照

javascript - nodejsリクエストモジュールでundefinedを返すジオコーディング機能

基本的に私はこのコードを持っています。リクエストの結果をコールバックで変数に保存し、プログラムの別の部分に戻すことができます。

console.log(geocodeLoc('Hoxton')) の結果は、console.log(result) が実行される前に返されます。

本当にイライラするのは、 console.log(result) の結果がまさに私が望むものであることです。

これがプログラムの出力です

私が欲しいのは、 geocodeLoc が結果を返すことだけです。私はNodeJSに慣れていないので、助けていただければ幸いです

0 投票する
4 に答える
928 参照

node.js - Node.js はグローバル変数のコピーをローカル スコープ内に保持します

リクエスト ライブラリを使用して多数の URL を取得する Node.js アプリケーションがあります。コードは次のようなものです。

簡単にするために、docs[URL1、URL2、URL3、...] のような URL が含まれているとします。最初の反復では、URL = URL1 であり、要求はその URL に送信されます。2 回目の反復では、リクエストが URL2 に送信され、以降も同様です。ただし、ループの最後では、URL = URLn になります。イベント完了関数内で、URL をログに記録すると、常に URLn が取得されます。ただし、[URL1、URL2、URL3、...] であるそれぞれの URL を取得できる必要があります。

グローバルURLが変更されたときに変更されないイベントを維持する方法、URLのローカルコピーを維持する方法はありますか?

これは簡単なことのはずですが、わかりません。

0 投票する
1 に答える
1487 参照

javascript - request モジュールを含むファイルをダウンロードし、結果を meteor および node.js の response に渡します

ディスクに保存せずにファイルをダウンロードし、ファイルの内容を応答に渡したい。本当に私はファイルをストリームとして取得し、それを応答に渡し、クライアントがファイルをダウンロードできるようにしたいと考えています。たとえば、以下の疑似コード ( iron-routermeteorrequest を使用):

これを行う方法?

ディスクにダウンロードせずにファイルをオンザフライで応答するための実際のソリューションは何ですか?

0 投票する
2 に答える
14500 参照

node.js - アップロードされたファイルを HTTP リクエストにストリーミングする

私の目標は、アップロードされたファイルを受け入れ、Wistia Upload APIを使用してWistiaにストリーミングすることです。HTTP リクエストにフィールドを追加できるようにする必要がありますが、ファイルがディスクにアクセスすることは望ましくありません。NodeExpressRequest、およびBusboyを使用しています。

以下のコードには 2 つのconsole.logステートメントがあります。最初の戻り値[Error: not implemented]と 2 番目の戻り値[Error: form-data: not implemented]。Node でのストリーミングは初めてなので、おそらく根本的に間違ったことをしているのでしょう。どんな助けでも大歓迎です。