我已经花了过去几天的时间尝试让这个工作,但没有成功。我发现大多数解决方案似乎对于调试node应用程序“还行”。但是我在调试grunt时没有太多运气。我想能够在我的gruntfile中设置断点,并使用浏览器或IDE逐步执行代码。
我尝试了以下方法:
- 使用IntelliJ IDE和Grunt控制台进行调试(进程以退出代码6完成)
- 使用Nodeeclipse进行调试(这种方法还可以,但无法触发在eclipse中设置的断点,不是很直观)
- 使用node-inspector进行调试(这个也还可以。我可以使用chrome中的F11和F10逐步执行一段时间。但最终它会崩溃。使用F8跳转到断点从来没有起作用。)
使用node-inspector出现的错误信息
目前,node-inspector感觉已经让我离我想要的最近了。为了到达这里,我执行了以下命令:
grunt node-inspector
node --debug-brk Gruntfile.js
然后我去了localhost:8080/debug?port=5858
来调试我的Gruntfile.js。但正如我之前提到的,一旦我按下F8跳转到断点,它就会崩溃,并显示上述错误。有人用这种方法成功地调试过Gruntfile吗?到目前为止,我从搜索努力中没有找到非常好的文档方式来做到这一点。希望这对将来的用户有用或有益。顺便说一句,我正在使用Windows 7。谢谢您的帮助。更新:
我已经尝试了@dylants建议的以下方法,但目前还没有成功。
1.在Windows机器上找到了grunt.cmd文件,位于
C:\Users\khollenbeck\AppData\Roaming\npm
。打开了grunt.cmd
文件并找到了以下内容...2.这让我进入了
C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin
,其中包含一个名为grunt
的文件。从那里,在文件顶部更改了这个代码#!/usr/bin/env node
为#!/usr/bin/env node --debug-brk
3.在执行node-inspector C:\path\to\gruntfile grunt
命令后,我得到了以下结果。4.接下来我从grunt dir中运行了
grunt
命令。(保留在原始命令提示符中运行的服务器)从这里开始,我期望Gruntfile.js出现在Chrome开发工具的源代码中。我还希望能够从那里设置断点。但是,这没有发生。相反,它只是在不中断或加载浏览器的情况下一路运行完整个Gruntfile。
编辑:
啊,我知道我错在哪里了。由于某些原因,我没有添加路径C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt,就直接执行了node --debug-brk。现在它已经正常工作了,非常感谢您的帮助。对于让问题拖延这么久,我表示歉意。但希望这对将来的Windows用户有用。
node-inspector
而不带任何参数。在第四步中,尝试运行node --debug-brk C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt
而不是仅运行grunt
。如果grunt以调试模式启动,则应该看到该命令的输出为“debugger listening on port 5858”。 - dylantsnode --debug-brk ...
命令运行。只需使用Chrome逐步执行即可,如果需要重新运行,请再次执行相同的node --debug-brk ...
命令。我已经更新了我的答案,希望能更好地解释。 - dylantsC:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt
就执行了node --debug-brk
。现在它可以工作了,非常感谢。很抱歉让这个问题拖延了这么久。但希望这对未来的Windows用户有所帮助。 - khollenbeck