Tag: 堆栈跟踪

有没有使用async_hooks检索asynchronous堆栈跟踪的任何npm模块?

节点8中有一个名为“async_hook”的新API,我相信应该使模块作者能够打印asynchronous堆栈跟踪。 我正在寻找类似于chrome dev-toolsasynchronous堆栈跟踪实现的东西,但在开发/debugging期间从控制台使用。 我知道这将带来性能开销 – 但这对我来说很好。 有没有人知道任何正在开发的模块,这样做?

来自节点的堆栈跟踪有时会被截断。 我怎样才能看到完整的错误?

我有一个(故意)崩溃我的节点应用程序的路线。 当我访问这条路线时,我得到了一个崩溃的适当日志: /Users/me/Documents/myapp/routes/index.js:795 global.fakeMethod(); ^ TypeError: global.fakeMethod is not a function at null._onTimeout (/Users/me/Documents/myapp/routes/index.js:795:11) at Timer.listOnTimeout (timers.js:92:15) 但是,当我在systemd下运行相同的代码时,错误被截断。 它 May 17 10:03:56 a.myapp.com www[28766]: /var/www/myapp/routes/index.js:795 May 17 10:03:56 a.myapp.com systemd[1]: myapp.service: main process exited, code=exited, status=1/FAILURE May 17 10:03:56 a.myapp.com systemd[1]: Unit myapp.service entered failed state. May 17 10:03:56 a.myapp.com systemd[1]: myapp.service failed. May 17 […]

如何在node.js中着色console.trace?

为了在node.js中使输出多姿多彩,我正在使用粉笔 。 我不知道,如果有任何方法来颜色console.trace()输出?

Nodejs:如何设置eval的文件名?

背景:我为node.js开发了一个小型模块系统,它asynchronous从一个单独的源服务器加载所有必需的代码,并用eval(code)编译它。 我的问题是,在这样的“eval-ed”代码中的所有运行时错误,堆栈跟踪显示<anonymous>作为文件名—我无法区分哪个代码段被引用。 我的问题:是否有一种方法来设置eval的文件名,以便堆栈跟踪显示一些程序定义的string,而不是<anonymous> ? 我目前的(不完美的)解决scheme:到目前为止,我把代码写入一个文件并加载require(file) 。 这将播种文件名—但这是一个复杂的解决方法。 注意:正常情况下,运行时错误不会在eval调用的编译中显示出来,而是在使用编译后的代码的时候。 因此,围绕eval进行尝试/捕捉并不能帮助识别哪个代码块失败。

Node.js堆栈跟踪信息

我正在寻找关于Node.js错误堆栈的信息,以及为什么图层似乎从它们丢失。 我们在Mongo数据库中找不到用户时发生错误。 我们使用mongoose作为ODM。 我们的错误pipe理非常简单 – 当调用Mongoose时,我们创build一个新的错误对象。 我们使用Winston进行login,并使用堆栈跟踪logging我们的错误。 但是我们似乎错过了一些信息。 你会注意到下面的错误发生的代码行 – “/var/app/current/models/users_model.js:19:9”。 问题是,它被埋在一堆Mongoose调用中,并没有显示我们的模块实际调用了哪个模块。 我不知道这是否正常,或者仅仅是因为它陷入了一个mongoose的承诺链,我所需要的信息已经被切断了。 任何想法或信息将不胜感激。 “/ message /”:\“USER_NOT_FOUND \”,\“stack \”:\“Error:USER_NOT_FOUND \ n at _e(/var/app/current/global/response.js:69:11 )\ n在Promise。 (/var/app/current/models/users_model.js:19:9)\n在Promise。 (/var/app/current/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8)\n在Promise.EventEmitter.emit(events.js:95:17)\ n在Promise.emit /var/app/current/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38)在Promise.fulfill(/ var / app / current / node_modules / mongoose / node_modules / mpromise / lib / promise .js:92:20)\ n在/var/app/current/node_modules/mongoose/lib/query.js:1784:30\n位于/var/app/current/node_modules/mongoose/lib/utils.js: 414:16 \ n在/ var / app / […]

asyncawait模块(节点)产生不可用的堆栈跟踪

我在使用node.js( https://github.com/yortus/asyncawait )的async / await实现时遇到问题。 在文档中说“将包括一个可用的堆栈跟踪” 。 但是对我来说并不是这样。 所以我觉得我做错了..但我不知道我做错了什么。 为了演示,我将比较“香草”bluebird示例的stacktrace与相应的asyncawait代码的相应堆栈跟踪(asyncawait在内部使用bluebird,所以我认为这是公平的)。 首先没有asyncawait的蓝鸟代码: var funcB = function() { return Promise.resolve().then(function() { throw new Error("some err"); }) }; var funcA = function() { return funcB(); }; gulp.task("aa",function(cb) { funcA().then(function() { cb(); }); }); 一开始,stacktrace产生信息“funcA – > funcB – > exception”。 没有更好的! Error: Error: some err at processImmediate [as […]

使用node.js和本地promise来构build堆栈跟踪

我们有一个明确的API应用程序,我们利用ES6的原生承诺。 我们目前的设置为简单的获取将是 //controller.js snippet get: function (req, res, next) { repository.getObject() .then(function (response) { return res.status(200).json(response); }).catch(function (err) { return next(err); }); } //repository.js snippet getObject:function(){ return new Promise(function (resolve, reject) { var sql = SELECT * FROM table; db.query(sql, function (err, result) { if (err) return reject(err); return resolve(result.rows)); }); }); } //app.js snippet […]

Node.js堆溢出错误

运行此代码1-2天后,我在AWS EC2上收到此错误 错误 <— Last few GCs —> st[10805:0x41cdff0] 7130379 ms: Mark-sweep 33.2 (78.7) -> 21.1 (75.8) MB, 13.8 / 0.1 ms (+ 23.1 ms in 23 steps since start of marking, biggest step 4.3 ms, walltime since start of marking 160 ms) final$ <— JS stacktrace —> Cannot get stack trace in GC. FATAL […]

尽pipe使用err.stack,但是在“Error(native)”而不是实际的node.js stacktrace上

在Windows 10的io.js 3.2.0 64bit中使用以下示例代码,并使用node example.js调用以下代码 'use strict'; const fs = require('fs'); fs.readdir('I_DONT_EXIST', function (/**Error*/ err, /**string[]*/ files) { if (err) { console.log(err.stack); } }); 我明白了 { [Error: ENOENT: no such file or directory, scandir '…\I_DONT_EXIST'] errno: -4058, code: 'ENOENT', syscall: 'scandir', path: '…\\I_DONT_EXIST' } Error: ENOENT: no such file or directory, scandir '…\I_DONT_EXIST' at Error […]

我怎样才能使Chai.js的例外包括堆栈跟踪信息?

我在节点上使用Chai.js。 行console.log(e)其中e是由Chai.js抛出的exception打印像expected a to be within 0..3一样expected a to be within 0..3 。 我怎样才能使Chai.js的例外包括堆栈跟踪信息?