我试图使用child_process.fork生成一个进程,该进程破坏并侦听V8调试协议。
但是,我无法让分叉进程侦听与父进程不同的端口。假设父进程侦听6000,子进程也尝试侦听端口6000。
在端口6000上打开套接字失败,在重新尝试之前等待1000 ms
这是我的密码:
// `test.js`, invoked as `node --debug-brk=6000 test.js`
var nodeModule, args, env, child
nodeModule = path.normalize(path.join(__dirname, '..', 'app.js'))
args = [
'--debug-brk=6001'
, '127.0.0.1'
, 3030
, 'api-testing'
]
env = { 'DB_URI': 'mongodb://localhost/test' }
child = require('child_process')
.fork(nodeModule, args, {env: env})
.on('message', callback)如您所见,我正在尝试让分叉进程侦听端口6001,但是子进程尝试侦听父进程正在使用的端口6000。
如何让子进程侦听端口、6001**,或其他空闲端口?**
在这个问题上有几条线索。例如:
然而:
cluster变体。execArgv,它在process中出现,但对于cluster仍然是无文档的。发布于 2013-10-08 16:01:27
很简单的答案,在this comment上找到,并在Freenode上的#Node.js的帮助下找到:
只需将--debug-brk移动到options param的execArgv键到fork
// Excerpt:
args = [
'127.0.0.1'
, 3030
, 'api-testing'
]
env = { 'DB_URI': 'mongodb://localhost/test' }
child = fork(nodeModule, args, {
env: env
, execArgv: ['--debug-brk=6001']
})
.on('message', this.callback)execArgv是传递给节点进程的参数数组。argv是传递给主模块的集合。child_process.fork有一个用于argv的专用参数,但是execArgv必须放在opts param中。这是可行的,在儿童进程中,我们有:
> process.execArgv
["--debug-brk=6001"]
> process.argv
["/usr/local/Cellar/node/0.10.13/bin/node" "/Users/dmitry/dev/linksmotif/app.js", "127.0.0.1", "3030", "api-testing"] 中的概述
Node.js一贯将execArgv和argv视为单独的值集。
发布于 2015-08-31 16:45:49
在分叉之前删除旧的debug-brk参数:
process.execArgv = process.execArgv.filter(function(o){
var x = "--debug-brk";
return o.substring(0, x.length) !== x
});再加上一个新的:
process.execArgv.push("--debug-brk=9999");https://stackoverflow.com/questions/19252310
复制相似问题