如何使用MongoDB Node.js驱动程序对客户端代码进行堆栈跟踪?

时间:2019-05-28 23:18:59

标签: node.js mongodb

我注意到MongoDB错误提供了相当无用的堆栈跟踪,仅指向驱动程序内部。客户端中触发错误的代码行不会输出:

const MongoClient = require('mongodb').MongoClient;

MongoClient.connect('...', { useNewUrlParser: true }, async (err, client) => {
  try {
    // some mongo client code...
    // some more mongo client calls...
    await client.db().collection('nonexistent').drop();
    // yet more mongo client calls...
  } catch (e) {
    console.error(e);
  }
  client.close();
});

以下是输出:

MongoError: ns not found
    at Connection.<anonymous> (/home/dandv/mongostack/node_modules/mongodb-core/lib/connection/pool.js:443:61)
    at Connection.emit (events.js:200:13)
    at processMessage (/home/dandv/mongostack/node_modules/mongodb-core/lib/connection/connection.js:364:10)
    at TLSSocket.<anonymous> (/home/dandv/mongostack/node_modules/mongodb-core/lib/connection/connection.js:533:15)
    at TLSSocket.emit (events.js:200:13)
    at addChunk (_stream_readable.js:290:12)
    at readableAddChunk (_stream_readable.js:271:11)
    at TLSSocket.Readable.push (_stream_readable.js:226:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:166:17) {
  ok: 0,
  errmsg: 'ns not found',
  code: 26,
  codeName: 'NamespaceNotFound',
  name: 'MongoError',
  [Symbol(mongoErrorContextSymbol)]: {}
}

如果try / catch块中有不止一个mongo驱动程序调用,则无法确定是哪个错误导致了错误。

是否有办法使这些堆栈跟踪信息生成客户端代码?

0 个答案:

没有答案