用debug-brk启动Sails不会运行Grunt?

当我没有debugging或仅使用–debug启动sails,并且包含–verbose作为应用程序参数时,它会显示它运行的grunt的详细信息(请参阅下面的第一个日志示例)。

但是,当我用debug-brk =运行应用程序时,它不会运行grunt。 (请参阅下面的第二个日志示例)。 我发布了这个在不同的论坛,有人build议“最可能的咕噜生成一个subprocess使用相同的debugging端口作为父应用程序…而且,由于端口已经绑定,它已被暂停”。 证据似乎支持这一点,但我无法find咕噜模块越过sails模块中的端口的位置。

有没有人遇到过这个? 我会认为这会是一件普通的事情,我错过了一些明显的东西。

问候

我正在使用…帆子0.10.5节点0.10.29咕噜0.4.5咕噜声0.1.13

这是一个很好的运行的例子..没有debugging或只有–debug(不是–debug-brk)

C:\Users\myuser\git\datavis>node app.js --verbose verbose: Setting Node environment... verbose: Please run `npm install coffee-script` to use coffescript (skipping for now) verbose: moduleloader hook loaded successfully. verbose: Loading app config... verbose: userconfig hook loaded successfully. verbose: Exposing global variables... (you can disable this by modifying the properties in `sails.config.globa verbose: logger hook loaded successfully. verbose: request hook loaded successfully. verbose: Loading the app's models and adapters... verbose: Loading app models... verbose: Loading app adapters... verbose: Loading blueprint middleware... verbose: blueprints hook loaded successfully. verbose: Loading runtime custom response definitions... verbose: responses hook loaded successfully. verbose: controllers hook loaded successfully. verbose: Loading policy modules from app... verbose: Finished loading policy middleware logic. verbose: policies hook loaded successfully. verbose: Loading app services... verbose: services hook loaded successfully. verbose: csrf hook loaded successfully. verbose: cors hook loaded successfully. i18n:debug will write to C:\Users\myuser\git\datavis\config\locales\en.json +0ms i18n:debug read C:\Users\myuser\git\datavis\config\locales\en.json for locale: en +1ms i18n:debug will write to C:\Users\myuser\git\datavis\config\locales\es.json +1ms i18n:debug read C:\Users\myuser\git\datavis\config\locales\es.json for locale: es +0ms i18n:debug will write to C:\Users\myuser\git\datavis\config\locales\fr.json +0ms i18n:debug read C:\Users\myuser\git\datavis\config\locales\fr.json for locale: fr +1ms i18n:debug will write to C:\Users\myuser\git\datavis\config\locales\de.json +0ms i18n:debug read C:\Users\myuser\git\datavis\config\locales\de.json for locale: de +0ms verbose: i18n hook loaded successfully. verbose: session hook loaded successfully. verbose: Loading app Gruntfile... verbose: Tracking new grunt child process... verbose: grunt hook loaded successfully. verbose: http hook loaded successfully. verbose: Overriding ejs engine config with ejslocals to implement layout support... verbose: Configuring socket (ws://) server... verbose: sockets hook loaded successfully. verbose: Loading user hooks... verbose: Located 0 user hook(s)... verbose: views hook loaded successfully. verbose: Setting default Express view engine to ejs... verbose: Initialized 0 user hook(s)... verbose: userhooks hook loaded successfully. verbose: Loading adapter ( sails-disk ) for sdm from `node_modules` directory... verbose: Starting ORM... verbose: orm hook loaded successfully. verbose: pubsub hook loaded successfully. verbose: Built-in hooks are ready. verbose: Instantiating registry... verbose: Loading router... verbose: Policy-controller bindings complete! verbose: Waiting for all hooks to declare that they're ready... verbose: All hooks were loaded successfully. verbose: Starting app at C:\Users\myuser\git\datavis... verbose: Running the setup logic in `sails.config.bootstrap(cb)`... verbose: Restricting access to explicit host: 0.0.0.0 info: info: info: Sails <| info: v0.10.5 |\ info: /|.\ info: / || \ info: ,' |' \ info: .-'.-==|/_--' info: `--'-------' info: __---___--___---___--___---___--___ info: ____---___--___---___--___---___--___-__ info: info: Server lifted in `C:\Users\myuser\git\datavis` info: To see your app, visit http://0.0.0.0:8181 info: To shut down Sails, press <CTRL> + C at any time. debug: -------------------------------------------------------- debug: :: Tue Oct 14 2014 09:04:11 GMT-0400 (Eastern Daylight Time) debug: Environment : development debug: Host : 0.0.0.0 debug: Port : 8181 debug: -------------------------------------------------------- verbose: Grunt :: Running "clean:dev" (clean) task verbose: Grunt :: >> 191 paths cleaned. verbose: Grunt :: Running "jst:dev" (jst) task >> Destination not written because compiled files were empty. Running "less:dev" (less) task verbose: Grunt :: Running "copy:dev" (copy) task verbose: Grunt :: Copied 178 files Running "coffee:dev" (coffee) task >> 0 files created. Running "sails-linker:devJs" (sails-linker) task padding length 4 File "views/layout.ejs" updated. Running "sails-linker:devStyles" (sails-linker) task padding length 4 File "views/layout.ejs" updated. Running "sails-linker:devTpl" (sails-linker) task padding length 4 File "views/layout.ejs" updated. Running "sails-linker:devJsJade" (sails-linker) task Running "sails-linker:devStylesJade" (sails-linker) task Running "sails-linker:devTplJade" (sails-linker) task verbose: Grunt :: Running "watch" task Waiting... verbose: Lowering sails... verbose: Sent kill signal to child process (21060)... verbose: Shutting down socket server... verbose: Socket server shut down successfully. verbose: Shutting down HTTP server... 

这里是–debug-brk =的例子

 C:\Program Files\nodejs\node.exe --debug-brk=53447 --nolazy app.js --verbose debugger listening on port 53447 verbose: Setting Node environment... verbose: Please run `npm install coffee-script` to use coffescript (skipping for now) verbose: moduleloader hook loaded successfully. verbose: Loading app config... verbose: userconfig hook loaded successfully. verbose: Exposing global variables... (you can disable this by modifying the properties in `sails.config.globals`) verbose: logger hook loaded successfully. verbose: request hook loaded successfully. verbose: Loading the app's models and adapters... verbose: Loading app models... verbose: Loading app adapters... verbose: Loading blueprint middleware... verbose: blueprints hook loaded successfully. verbose: Loading runtime custom response definitions... verbose: responses hook loaded successfully. verbose: controllers hook loaded successfully. verbose: Loading policy modules from app... verbose: Finished loading policy middleware logic. verbose: policies hook loaded successfully. verbose: Loading app services... verbose: services hook loaded successfully. verbose: csrf hook loaded successfully. verbose: cors hook loaded successfully. Mon, 13 Oct 2014 01:31:42 GMT i18n:debug will write to c:\Users\cdeanhar\git\datavis\config\locales\en.json debug: -------------------------------------------------------- Mon, 13 Oct 2014 01:31:42 GMT i18n:debug read c:\Users\cdeanhar\git\datavis\config\locales\en.json for locale: en debug: :: Sun Oct 12 2014 21:31:44 GMT-0400 (Eastern Daylight Time) debug: Environment : development debug: Host : 0.0.0.0 debug: Port : 8181 debug: -------------------------------------------------------- Mon, 13 Oct 2014 01:31:42 GMT i18n:debug will write to c:\Users\cdeanhar\git\datavis\config\locales\es.json Mon, 13 Oct 2014 01:31:42 GMT i18n:debug read c:\Users\cdeanhar\git\datavis\config\locales\es.json for locale: es Mon, 13 Oct 2014 01:31:42 GMT i18n:debug will write to c:\Users\cdeanhar\git\datavis\config\locales\fr.json Mon, 13 Oct 2014 01:31:42 GMT i18n:debug read c:\Users\cdeanhar\git\datavis\config\locales\fr.json for locale: fr Mon, 13 Oct 2014 01:31:42 GMT i18n:debug will write to c:\Users\cdeanhar\git\datavis\config\locales\de.json Mon, 13 Oct 2014 01:31:42 GMT i18n:debug read c:\Users\cdeanhar\git\datavis\config\locales\de.json for locale: de verbose: i18n hook loaded successfully. verbose: session hook loaded successfully. verbose: Loading app Gruntfile... verbose: Tracking new grunt child process... verbose: grunt hook loaded successfully. verbose: http hook loaded successfully. verbose: Overriding ejs engine config with ejslocals to implement layout support... verbose: Configuring socket (ws://) server... verbose: sockets hook loaded successfully. verbose: Loading user hooks... verbose: Located 0 user hook(s)... verbose: views hook loaded successfully. verbose: Setting default Express view engine to ejs... verbose: Initialized 0 user hook(s)... verbose: userhooks hook loaded successfully. verbose: Loading adapter ( sails-disk ) for sdm from `node_modules` directory... verbose: Starting ORM... verbose: orm hook loaded successfully. verbose: pubsub hook loaded successfully. verbose: Built-in hooks are ready. verbose: Instantiating registry... verbose: Loading router... verbose: Policy-controller bindings complete! verbose: Waiting for all hooks to declare that they're ready... verbose: All hooks were loaded successfully. verbose: Starting app at c:\Users\cdeanhar\git\datavis... verbose: Running the setup logic in `sails.config.bootstrap(cb)`... verbose: Restricting access to explicit host: 0.0.0.0 info: info: info: Sails <| info: v0.10.4 |\ info: /|.\ info: / || \ info: ,' |' \ info: .-'.-==|/_--' info: `--'-------' info: __---___--___---___--___---___--___ info: ____---___--___---___--___---___--___-__ info: info: Server lifted in `c:\Users\cdeanhar\git\datavis` info: To see your app, visit http://0.0.0.0:8181 info: To shut down Sails, press <CTRL> + C at any time. verbose: browser client (v0.10.0) is trying to connect a socket... verbose: Generated new session for socket.... { headers: { host: 'localhost:8181', connection: 'keep-alive', 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36', accept: '*/*', referer: 'http://localhost:8181/', 'accept-encoding': 'gzip,deflate,sdch', 'accept-language': 'en-US,en;q=0.8', cookie: 'search=ITSM; tab=0; sails.sid=s%3AIx4tfewY7LnBgXKFvlozSsyQ.qExipPSWxVgz7yG8wRgCq6h4DDgYIahIuQKTGTAAVMM; dev-perspective=App%20Owner; dev-focusME=2bc6168b249968d001249f6557760003' }, address: { address: '127.0.0.1', port: 53462 }, time: 'Sun Oct 12 2014 21:31:44 GMT-0400 (Eastern Daylight Time)', query: { __sails_io_sdk_version: '0.10.0', __sails_io_sdk_platform: 'browser', __sails_io_sdk_language: 'javascript', t: '1413163902883' }, url: '/socket.io/1/?__sails_io_sdk_version=0.10.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&t=1413163902883', xdomain: false, secure: undefined, issued: 1413163904190, cookie: { search: 'ITSM', tab: '0', 'sails.sid': 's:Ix4tfewY7LnBgXKFvlozSsyQ.qExipPSWxVgz7yG8wRgCq6h4DDgYIahIuQKTGTAAVMM', 'dev-perspective': 'App Owner', 'dev-focusME': '2bc6168b249968d001249f6557760003' }, sessionID: 'Ix4tfewY7LnBgXKFvlozSsyQ', session: { cookie: { httpOnly: true } } } verbose: authorized verbose: handshake authorized dS9obVLitVM6vFL4Ies8 verbose: Rendering view: "home/index" (located @ "c:\Users\cdeanhar\git\datavis\views\home\index") verbose: • using configured layout:: layout (located @ "c:\Users\cdeanhar\git\datavis\views\layout") verbose: Rendering view: "home/index" (located @ "c:\Users\cdeanhar\git\datavis\views\home\index") verbose: • using configured layout:: layout (located @ "c:\Users\cdeanhar\git\datavis\views\layout") verbose: browser client (v0.10.0) is trying to connect a socket... verbose: Connected socket to existing session.... verbose: authorized verbose: handshake authorized 1PVmZ4H7A9dDqfRzIes9 verbose: Sending 404 ("Not Found") response verbose: setting request GET /socket.io/1/websocket/1PVmZ4H7A9dDqfRzIes9?__sails_io_sdk_version=0.10.0&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript verbose: set heartbeat interval for client 1PVmZ4H7A9dDqfRzIes9 verbose: client authorized for verbose: websocket writing 1:: verbose: A socket.io client (1PVmZ4H7A9dDqfRzIes9) connected successfully! Loading first.. [object Object] Loading more.. [object Object] verbose: Sending 404 ("Not Found") response 

TL; DR – 一个Nodesubprocess分叉“bug”让Grunt等待一个永远不能连接的debugging器。

Sails使用child_process.fork()来产生一个单独的进程,以便运行grunt。

新进程inheritance调用进程的节点命令行参数 (fork的默认操作)。 在你的情况下,“–debug-brk”。 这会导致grunt的节点进程在第一行停止 – 等待debugging器连接。

不幸的是,在Windows下,这个监听端口似乎是用SO_REUSEADDR打开的。 这意味着两个进程被允许在同一个端口上侦听!

“第二个套接字成功绑定后,绑定到该端口的所有套接字的行为是不确定的。”

在我的testing中,我发现所有的连接只会触发第一个开始监听的进程。 我永远不能连接到孩子Grunt进程,以允许执行继续。

我听说在更新版本的节点(0.15?)中,每个分支将从基地递增地获得自己的端口。 但是我没有自己testing过。