Javascript 如何在node.js上找到调用函数的位置?

Javascript 如何在node.js上找到调用函数的位置?,javascript,node.js,Javascript,Node.js,我在Node.js中有一个导出的函数,出于某种原因,它在一段时间后(比如5分钟后)会再次被调用,并使用相同的数据。例如,当我使用3个不同的变量调用它3次时,它将在一段时间后以相同的顺序使用相同的变量再次调用,并且调用之间的延迟相同。现在我正在调试这个函数,并试图找到再次调用该函数的位置。我没有任何循环、超时,也没有保存传递给函数的变量 可以使用哪些工具或函数来确定该函数的调用方 抱歉,没有代码示例,因为答案应该是一般性的,并且可以以各种方式使用。谢谢 可能您的问题在于调用位于闭包中。没有代码很难

我在Node.js中有一个导出的函数,出于某种原因,它在一段时间后(比如5分钟后)会再次被调用,并使用相同的数据。例如,当我使用3个不同的变量调用它3次时,它将在一段时间后以相同的顺序使用相同的变量再次调用,并且调用之间的延迟相同。现在我正在调试这个函数,并试图找到再次调用该函数的位置。我没有任何循环、超时,也没有保存传递给函数的变量

可以使用哪些工具或函数来确定该函数的调用方


抱歉,没有代码示例,因为答案应该是一般性的,并且可以以各种方式使用。谢谢

可能您的问题在于调用位于闭包中。没有代码很难准确地说出来。您可以使用和调试应用程序

通过npm全局安装节点检查器(需要根权限):

通过npm将v8 profiler安装到您的应用程序节点_模块:

npm install -g node-inspector
npm install v8-profiler
将v8 profiler包含到您的应用程序中并开始评测:

var-profiler=require('v8-profiler');
profiler.startProfiling(“配置文件名”);
//关键代码
//profiler.stopProfiling('profile name');//如果需要
在调试模式下运行应用程序:

node --debug your/node/program.js
启动节点检查器:

node-inspector &
您可以使用--web端口选项更改默认8080端口:

node-inspector --web-port=8081 &
打开http://127.0.0.1:8080/debug?port=5858 在您最喜欢的基于WebKit的浏览器中

转到“配置文件”选项卡并启用配置文件。在这之后,应用程序中的每个profiler.startProfiling调用都将创建新的执行跟踪,您应该在“cpu配置文件”中看到它。

console.log的可能副本(新错误().stack);在第四次运行函数时,将提供堆栈跟踪。 http://127.0.0.1:8080/debug?port=5858