0

発信 API 呼び出しを行うために、bluebird の promise オブジェクトにラップされた restler を使用しています。しかし、私はで取得してPossibly unhandled TypeError: Converting circular structure to JSONnode_modules/bluebird/js/main/promise.jsます。

これは、JSON.stringify がなくても発生します。promise.js のレベルで起こっています。

これについて何ができますか?

                rest.postJson(uri, body).then(
                    function(response) {
                        console.log(response.access.token.id);
                        console.log(response.statusCode);
                        res.send(response.access.token.id);
                    }, function(error) {
                        console.log(error.statusCode);
                        res.send(JSON.stringify(error));
                           //res.send(error);
                        }); 




Possibly unhandled TypeError: Converting circular structure to JSON
    at Object.stringify (native)
    at ServerResponse.res.json (/home/one/try/cloudimageshare-monitoring/project/node_modules/express/lib/response.js:205:19)
    at ServerResponse.res.send (/home/one/try/cloudimageshare-monitoring/project/node_modules/express/lib/response.js:121:21)
    at /home/one/try/cloudimageshare-monitoring/project/app/scripts/proxy/proxies_express_module.js:39:29
    at tryCatch1 (/home/one/try/cloudimageshare-monitoring/project/node_modules/bluebird/js/main/util.js:43:21)
    at Promise$_callHandler [as _callHandler] (/home/one/try/cloudimageshare-monitoring/project/node_modules/bluebird/js/main/promise.js:627:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/home/one/try/cloudimageshare-monitoring/project/node_modules/bluebird/js/main/promise.js:641:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (/home/one/try/cloudimageshare-monitoring/project/node_modules/bluebird/js/main/promise.js:804:14)
    at Promise$_settlePromises [as _settlePromises] (/home/one/try/cloudimageshare-monitoring/project/node_modules/bluebird/js/main/promise.js:938:14)
    at Promise$_rejectPromises [as _rejectPromises] (/home/one/try/cloudimageshare-monitoring/project/node_modules/bluebird/js/main/promise.js:931:10)

更新:エラーオブジェクトのキーが役立つ場合は、次のとおりです。

[ '_readableState',
  'readable',
  'domain',
  '_events',
  '_maxListeners',
  'socket',
  'connection',
  'httpVersion',
  'complete',
  'headers',
  'trailers',
  '_pendings',
  '_pendingIndex',
  'url',
  'method',
  'statusCode',
  'client',
  '_consuming',
  '_dumped',
  'httpVersionMajor',
  'httpVersionMinor',
  'upgrade',
  'req',
  'pipe',
  'addListener',
  'on',
  'pause',
  'resume',
  'read',
  'rawEncoded',
  'raw' ]
4

1 に答える 1

1

いいえ。express'res.sendに文字列を渡さずにオブジェクト ( など) を渡すと、内部的errorに呼び出されます。JSON.stringifyこれは確実に発生しませんpromise.js(ただし、Bluebird はスタックトレースに対して奇妙なことを行います)。試す

res.send(error.message);
于 2014-07-10T18:44:01.783 に答える