私はnode.jsでこの問題を抱えています。アプリケーションを起動するときに--trace-sync-ioというノードを使用しています。リクエストモジュールとrequest-promiseモジュールを使用してserver.jsファイルでapiを呼び出すと、私はSync APIを使用していると警告し、私のrequest.promiseコールの開始点を指しています。私は、コマンドnode --trace-sync-io server.js
でノードを起動するときNode.jsでasync apiを呼び出す方法は?
var request = require("request");
var rp = require("request-promise");
var options = {
uri: url,
json: true
};
rp(options).then(function (data){
//then I do something with data here
}.catch(function(err){
//catch errors here
})
は、だから私はWARNING: Detected use of sync API
とスタックトレースを取得私は、コールRPを開始する行を指す
(node:17212) WARNING: Detected use of sync API
at rng (mypath\node_modules\uuid\lib\rng.js:7:10)
at v4 (mypath\node_modules\uuid\v4.js:13:52)
at Multipart (mypath\node_modules\request\lib\multipart.js:11:19)
at Request (mypath\node_modules\request\request.js:127:21)
at request (mypath\node_modules\request\index.js:54:10)
at mypath\server.js:333:8
at emitOne (events.js:96:13)
at emit (events.js:188:7)
at Query.handleReadyForQuery (mypath\node_modules\pg\lib\query.js:126:8)
(options.then(機能(データ)))
[crypto.randomBytes]の同期バージョンを呼び出す[this function](https://github.com/kelektiv/node-uuid/blob/3b218806aa82e76c7aaa6c9ad62e4d5abe2de4e3/lib/rng.js#L6-L8)を指します。 '。 'request'と' uuid'にパッチを当てずに修正することはできませんが、実際の問題は何もわかりません。 – robertklep
@robertklepなぜリクエストモジュールがそのようなものを呼び出すのですか?私が考える問題は、sync apiを使用しているときにサーバが何も処理できないため、node.jsでsync apiを使用するとサイト全体が遅くなることが読み取れるということです。しかし、私はこの特定のものがどんな種類の影響を持っているのか分かりません。 – Quartal
'request'はマルチパートリクエストにUUIDを使用します(UUIDはセパレータとして使用されます)。マルチパートデータを投稿していなくても明らかです。しかし、それは大したことではない、私のラップトップは約300K UUIDv4秒を生成することができるので、それぞれ約3.3マイクロ秒かかる。それは目立つようにはなりません。 – robertklep