NodeJS 在异步函数(asyncawait)中调用栈打印不全的问题

JavaScript017

NodeJS 在异步函数(asyncawait)中调用栈打印不全的问题,第1张

我在 index.ts 中调用 time-helper.ts 中的 waitForFn(),出错的调用栈是这样的:

这个调用栈有啥问题呢?只显示出了 time-helper 模块的文件信息,完全不显示调用者的信息,这样一来,完全不知道是谁调用了这个 waitForFn() 函数。你从错误信息里都不知道是哪个函数出错了。

出现这种情况,原因在这里:「链接」

解决办法在这里:「链接」

简单总结下 ,就是:

在异步函数返回之前,系统会清空当前调用线,然后把异步函数中的调用栈写进去。

解决办法 :只要把tsconfig.json文件中的compilerOptions.target改成es2018或以上的版本即可。

改完后效果:

可见整个调用栈都非常清晰。

原来是请求了favicon.ico(浏览器默认会请求一次favicon.ico),那就做下过滤吧。

客户端、服务端对我们都不陌生,Node.js中的HTTP接口被设计成支持协议的许多特性。比如,大块编码的消息。这些接口不缓冲完整的请求或响应,用户能够以流的形式处理数据。

为了支持各种可能的HTTP应用,Node.js的HTTPAPI是非常底层的。它只涉及流处理与消息解析。它把一个消息解析成消息头和消息主体,但不解析具体的消息头或消息主体。