簡體   English   中英

NodeJS斷點有時不起作用

[英]NodeJS breakpoints sometimes not working

我們正在使用--harmony命令行標志構建一個NodeJS 5.5.0應用程序以啟用ES6。 這是一個非常簡單的API代理應用程序,因此除了API響應本身之外,沒有數據層或前端。 該應用程序通過Swagger用於API本身與connect捆綁在一起。 我正在使用IntelliJ 15,除了調試無法始終達到我的斷點之外,其他所有功能都運行良好。 我發現這很令人沮喪並且浪費了開發時間-也許我在這里錯過了Node環境的新功能?

這是我的具體示例:

app.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的轉換object-mapper

Transformer.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始終在應用程序啟動時起作用,我跳過它並打個電話,然后點擊“開始!”。 正如我所期望的那樣在控制台中打印。 該應用程序會無限期地掛在這里,但我無法檢查任何變量,並且IDE不會注冊它已達到斷點。 我們已經在IDE外部使用node-inspector ,Chrome工具和本機交互式節點調試器對此進行了測試,但是存在相同的問題。 我還在節點4和5的多個版本上進行了測試。

暫時,我們不得不使用函數包裝器來包裝大多數文件,因為我們正在使用毯子進行代碼覆蓋,沒有它就無法工作。 我曾嘗試在上面的transformer.js中刪除函數包裝器,但調試器仍未達到斷點2。

當我沒主意時,有人可以提供一些見解嗎?

我找到了原因。 當節點調試器碰到任何帶有util.inspect() ,它都將掛在那里,這似乎是一個潛在的錯誤。

我已經確認這是最新版本的Node 4.2.6和5.5.0以及每夜構建5.5.1和6.0.0中的問題。

參見https://github.com/nodejs/node/issues/4906

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM