使用群集子进程时,无法调试nodejs在Visual Studio代码中表达应用程序

时间:2017-01-25 00:34:34

标签: node.js visual-studio-code

我正在尝试使用Visual Studio Code的调试器调试我的nodejs express应用程序。调试器在技术上有效,但由于某种原因,代码在通过调试器运行时会提前停止执行。这是我的index.js文件的代码:

'use strict';

var config = require('./config/config');
var logger = require('./lib/logger');
var errors = require('./lib/errors');
var throng = require('throng');
var Promise = require('bluebird');
var mongoose = require('mongoose').connect(config.mongo_url);
mongoose.Promise = Promise;
// mongoose.set('debug', true);

var api = require('./app/api/api');
var bodyParser = require('body-parser');
var express = require('express');
var app = express();

var options = {
    workers: config.web_concurrency,
    lifetime: Infinity
}

throng(options, start);

function start() {

    // middleware
    app.set('x-powered-by', false);
    app.use(require('morgan')('dev'));
    app.use(bodyParser.urlencoded({extended: true}));
    app.use(bodyParser.json());

    // routes
    app.use('/api/' + config.api_version, api);

    // errors
    app.use(errors);

    // Server setup
    var server = app.listen(config.port, function() {
        console.log('server server server');
        logger.silly('pid: ' + process.pid + ' listening on port:' + config.port);
    });

    // Shutdown
    var gracefulShutdown = function() {
        logger.silly('Received SIGTERM signal, shutting down express server');
        server.close();
    }

    process.on('SIGTERM', gracefulShutdown);

    server.on('close', function() {
        logger.silly('Express server closed.. about to cleanup connections');

        mongoose.disconnect();
    });
}

这是一个非常基本且典型的index.js文件,我已经在很多不同的项目中成功使用了很长一段时间。当我通过终端运行node index.jsnodemon index.jsnpm start时,一切正常。应用程序运行,我可以成功地向应用程序发送API请求。

但是,当我使用Visual Studio Code的调试器运行它时,它会在以下代码行停止:

throng(options, start);

我可以在此之前设置断点,它们会命中,我也可以在VSCode的终端窗口中查看此行之前的日志语句。但是,在throng(options, start)运行后,没有任何反应。我也无法向应用发送http请求。 VSCode的调试控制台只给我一个你期望的典型输出:

node --debug-brk=11591 --nolazy index.js 
Debugger listening on port 11591
Debugger listening on port 11592

throng模块是一种在nodejs应用中分叉子进程的简便方法:https://github.com/hunterloftis/throng

无论我做什么,当我通过终端运行它时一切正常,但是当使用VSCode的调试器时它就无法工作。

这是我的launch.json文件,由VSCode生成:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceRoot}/index.js",
            "cwd": "${workspaceRoot}",
            "env": {
            "NODE_ENV": "development"
            }
        },
        {
            "type": "node",
            "request": "attach",
            "name": "Attach to Process",
            "port": 3000
        }
    ]
}

0 个答案:

没有答案