NodeJS 断点有时不起作用
NodeJS breakpoints sometimes not working
我们正在构建一个使用 --harmony
命令行标志来启用 ES6 的 NodeJS 5.5.0 应用程序。这是一个非常简单的 API 代理应用程序,因此除了 API 响应本身之外,没有数据层或前端。该应用程序与connect绑定在一起,将Swagger用于API本身。我正在使用 IntelliJ 15,除了调试无法始终命中我的断点之外,一切正常。 我发现这非常令人沮丧并且浪费了开发时间 - 也许我在这里错过了一些东西,因为我是 Node 环境的新手?
这是我的具体例子:
应用.js:
// requires here
swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) {
// Interpret Swagger resources and attach metadata to request
app.use(middleware.swaggerMetadata());
// Validate Swagger requests
app.use(middleware.swaggerValidator());
// Route validated requests to appropriate controller
app.use(middleware.swaggerRouter(options));
// Serve the Swagger documents and Swagger UI
app.use(middleware.swaggerUi());
// Start the server
http.createServer(app).listen(serverPort, function () {
console.log('Server is listening on port %d', serverPort);
});
});
module.exports = app;
然后,在沿线的某个地方,我们使用了一个转换器,该转换器具有在每个 API 调用上运行的object-mapper
:
变压器.js:
'use strict';
(function () {
var util = require('util');
//==> breakpoint #1 on the line below, successfully hit when the app launches
module.exports = function (req, res, data, next) {
console.log('GOT HERE!');
//==> breakpoint #2 on the line below never hit but app hangs here
var operation = req.swagger.operation;
// more code here
};
}).call(this);
断点 #1 在应用程序启动时始终有效,我跳过它并拨打电话,"GOT HERE!"正如我所期望的那样打印在控制台中。该应用程序无限期地挂起在这里,但我无法检查任何变量,并且 IDE 没有注册它已命中断点。我们已经使用 node-inspector
、Chrome 工具和本机交互式节点调试器在 IDE 外部对此进行了测试,但存在相同的问题。我还在节点 4 和 5 的多个版本上对此进行了测试。
我们暂时不得不用函数包装器包装我们的大部分文件,因为我们使用毯子进行代码覆盖,没有这个它就不起作用。我已经尝试删除上面的转换器中的函数包装器.js但调试器仍然没有命中断点 #2。
任何人都可以提供一些见解,因为我没有想法?
我已经找到了原因。当 Node 调试器遇到任何带有util.inspect()
的行时,它似乎存在一个潜在的错误,它会挂在那里。
我已经确认这是最新版本的 Node 4.2.6 和 5.5.0 以及每晚版本 5.5.1 和 6.0.0 中的一个问题。
见 https://github.com/nodejs/node/issues/4906
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- 代码仅在调试器模式下工作,断点位于 Consol.log否则不起作用
- IE 开发人员工具断点不起作用
- NodeJS 断点有时不起作用
- 断点在使用Firebug(1.11.2)的Firefox(19.0)中不起作用