如何使用 MongoDB Node.js 驱动程序获取客户端代码的堆栈跟踪?

Dan*_*scu 6 mongodb node.js

我注意到 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();
});
Run Code Online (Sandbox Code Playgroud)

这是输出:

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)]: {}
}
Run Code Online (Sandbox Code Playgroud)

如果 try/catch 块中有多个 mongo 驱动程序调用,则无法判断是哪一个生成了错误。

有没有办法让这些堆栈跟踪引导至客户端代码?