风帆调试命令在 Sails.js 中不起作用

sails debug command not working in Sails.js

我正在创建我的第一个 sails.js 应用程序。当我尝试

sails debug

我在命令提示符下收到以下错误

Debugger listening on port 5858
info: Starting app...

error: Grunt :: Error: listen EADDRINUSE
    at exports._errnoException (util.js:746:11)
    at Agent.Server._listen2 (net.js:1129:14)
    at listen (net.js:1155:10)
    at Agent.Server.listen (net.js:1240:5)
    at Object.start (_debugger_agent.js:20:9)
    at startup (node.js:86:9)
    at node.js:814:3

为了使用 port:5858 获取进程的 PID,我尝试了 运行

C:\Windows\system32>netstat -a -n -o

但不幸的是,没有进程绑定到端口 5858。我在这里遗漏了什么吗?

我正在使用 Windows 8.1 与 node.js v0.12.0sails.js 0.11.0

您是否尝试过 运行 在调试中像简单的 node.js 一样?

节点--调试app.js

我的服务器使用带有 sails 的节点 0.10.38,因为 11+ 有一些奇怪的未修复的咕噜声。有一段时间没有提出这个问题,但看起来有新的 activity...查看 this comment in particular,它解释了问题和可能的修复(直接引用):

Possible Solution:

Looking at the options for child_process.fork, the --debug flag is being passed down to the child upon exiting the womb i.e. running sails debug :

// ./node_modules/sails/bin/sails-debug.js

// Spin up child process for Sails
Womb.spawn('node', ['--debug', pathToSails, 'lift'], {
    stdio: 'inherit'
});

setting options.execArgv to an empty array removes the flag and allows the process to continue:

// ./node_modules/sails/lib/hooks/grunt/index.js
var child = ChildProcess.fork(
  path.join(__dirname, 'grunt-wrapper.js'),
  [
    taskName,
    '--pathToSails='+pathToSails,

    '--gdsrc='+ pathToSails + '/node_modules'
  ],
  {
    silent: true,       
    stdio: 'pipe',
    execArgv: []
  }
);

这似乎是 Sails 中的一个错误。您可以通过替换 Sails 文件自行应用修复:

./node_modules/sails/lib/hooks/grunt/index.js

内容如下:

https://raw.githubusercontent.com/balderdashy/sails/88ffc0ed9949f8c74ea390efb5610b0e378fa02c/lib/hooks/grunt/index.js

这是 Sails 版本 v12 中的文件。