4

我对使用Cluster的Visual Studio 代码有一些问题

编辑

如果我按 Ctrl + F5它可以正常工作,除了F5之外它还在做什么,我是否需要始终使用 Ctrl 启动命令?

---

当使用 VS Code Launch 命令(F5)启动时,似乎工作人员永远不会启动。我是否需要对 .vscode/launch.json 文件进行一些更改以使集群正常工作。

实际代码复制自 Node.js 6 api https://nodejs.org/api/cluster.html#cluster_cluster

npm test Windows 命令提示符显示:

Master started
Listening port 80
Listening port 80
Listening port 80
Listening port 80

VS Code (F5)调试控制台显示:

node --debug-brk=7601 --nolazy index.js
Debugger listening on port 7601
Master started
Debugger listening on port 7602
Debugger listening on port 7603
Debugger listening on port 7604
Debugger listening on port 7605

VS 代码启动.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "node",
            "request": "launch",
            "program": "${workspaceRoot}/index.js",
            "stopOnEntry": false,
            "args": [],
            "cwd": "${workspaceRoot}",

    ..........

index.js

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
    // Fork workers.
    console.log('Master started')
    for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
    }

    cluster.on('exit', (worker, code, signal) => {
        console.log(`worker ${worker.process.pid} died`);
    });
} else {
    // Workers can share any TCP connection
    // In this case it is an HTTP server
    http.createServer((req, res) => {
        res.writeHead(200);
        res.end('hello world\n');
    }).listen(80);
    console.log('Listening port 80')
}
4

2 回答 2

1

我遇到过同样的问题。weinand 在https://github.com/Microsoft/vscode/issues/3201中描述的第二种解决方法对我有用:

从终端启动节点并使用 VS Code 调试器附加到它。

在终端中运行: node --debug app.js

然后选择默认的“附加”启动配置并附加到它。

如果您实际上想要调试任何工作人员而不仅仅是启动的第一个进程,则解决方法是首选方法。

于 2016-10-12T11:33:30.387 回答
0

我在使用 Cluster 的 Visual Studio 代码上遇到了同样的问题。

我发现有一些肮脏的方法可以使它起作用。

Mac OS X:

/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/node-debug/out/node/nodeDebug.js

视窗:

C:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\node-debug\out\node\nodeDebug.js

改变这个

if (!this._noDebug) {
    launchArgs.push("--debug-brk=" + port);
}

if (!this._noDebug) {
    launchArgs.push("--debug=" + port);
}

我知道这不是解决它的最佳方法,但到目前为止它对我来说是有效的。

于 2016-05-06T16:16:30.583 回答