如何在nodemon旁边运行node-inspector?

29

我目前正在使用Node与nodemon。然后我开始考虑可能有时使用Node进行调试会更好,所以我开始使用node-inspector

但是,有没有可能同时运行这两个程序?

通常我会使用以下命令来运行nodemon:

nodemon server.js
//and similarly 
node-debug server.js

我也尝试过:

nodemon --debug http.js

但很遗憾,这也没起作用。

但两个一起?


"node-inspector和nodemon --debug filename.js"应该能够很好地工作。只需要一个命令行即可。 - anandharshan
8个回答

28
如果你想将它们作为一个命令运行,这对我很有效:node-inspector & nodemon --debug app.js(将app.js替换为你的脚本名称)。 如果出现问题,你偶尔需要手动终止node-inspector,但以这种方式运行命令可以让你选择手动运行rs来重新启动nodemon。希望有所帮助。

1
这实际上应该标记为正确答案。因为这只是有效的!不需要两个窗口。 - Moataz Elmasry
在Win7上,使用node-inspector v0.10.2和nodemon v1.3.7对我不起作用。它只会加载node-inspector - 有什么想法吗? - Jörn Berkefeld
这是最好的方法,可以确保当nodemon更新时,node-inspector也会得到代码更新。其他方法“可行”,但效率不如此高。希望这个答案被标记为被接受的答案。 - grant
4
@JörnBerkefeld 在Unix中,“&”符号表示在后台运行。Windows有不同的命令。请参考这篇文章:http://superuser.com/a/591084/69693 - Alex

17

您需要使用nodemon --debug server.js来启动您的服务器,然后您需要在单独的终端窗口中运行node-inspector,除非您将nodemon推送到后台。


嗯,好主意,但我无法让它工作。也许我对检查器期望过高了?不过我按照以下步骤操作:nodemon --debug src/index.js,然后我打开另一个命令提示符并输入 node-debug index.js。顺便说一下,我在使用Windows :) - Jamie Hutber
你在哪里运行 node-inspector? - Paul
花了我一些时间才回到这里 :) 但我不得不开始另一个项目,然后搬家。但是我回来了!不过,@paul,有一件事我可能误解了node-inspector的实际用途。我希望如果我在我的node文件中使用console.log,它们会在NI中输出。我猜这不是这种情况? - Jamie Hutber
1
对于那些想要更可靠的解决方案并且不需要使用Windows黑客技巧的人,请查看我下面的答案。 - olive_tree

1
对于那些希望使用独立于操作系统的解决方案且不需要针对 Windows 等进行任何修改的人,您可以使用 npm-run-all。这是一个 CLI 工具,允许并行或顺序地运行多个 npm 脚本。因此,您可以将 package.json 设置为如下所示:
"scripts": {
  "start": "npm-run-all --parallel lint start:debug start:server",
  "lint": "eslint . --ext .js",
  "start:debug": "node-debug server.js",
  "start:server": "nodemon server.js"
}

然后在CLI中输入:npm start

注意:我的经验是同时运行nodemon和node-debug有时会导致奇怪的node-inspector行为。因此,当调试时,我已选择从我的脚本中删除nodemon,并依赖node-inspector的save-live-edit功能来实时更改文件。


0

你必须使用以下命令安装node-inspector和nodemon:

npm install -g nodemon
npm install -g node-inspector

在Windows中运行,请创建一个新的.bat文件并添加以下行:
@echo off
echo Starting developer enviroment of the file %1
start nodemon --debug-brk %1
node-debug %1

然后运行:

node_desarrollo.bat "要运行的文件名.js"

如果出现错误:

Error: listen EADDRINUSE :::5858
    at Object.exports._errnoException (util.js:855:11)
    at exports._exceptionWithHostPort (util.js:878:20)
    at Agent.Server._listen2 (net.js:1237:14)
    at listen (net.js:1273:10)
    at Agent.Server.listen (net.js:1369:5)
    at Object.start (_debug_agent.js:21:9)
    at startup (node.js:72:9)
    at node.js:980:3

这是正常的,因为node-inspector需要打开该端口进行连接,但由于nodemon --debug-brk %1已经打开了5858端口,所以它无法打开并显示EADDRINUSE :::5858错误。请注意,nodemon的--debug-brk标志对于在第一行设置断点是必要的。尝试在运行.bat文件后修改file.js文件,并查看调试器中反映的更改。此调试器会重新启动并显示在file.js文件中所做的更改。祝JS编码愉快!


0

针对在 Windows 上运行 bash shell 的用户的一个 hacky 修复方法:

首先,将 node-inspector 添加到您的路径中。(您可以使用 npm list -g 找到 npm 安装软件包的位置)

然后在 bash 中使用此命令,或将其添加到您的 npm 脚本中:

START /B node-inspector && nodemon --debug server.js

START /B 是在 Windows 中后台运行的命令。


0

我无法让nodemon与node-inspector协同工作。进行了一次更改后,它会重新启动,但之后就不再起作用了。也许是因为我正在使用docker容器。

重新加载应用程序的最简单方法是让node-inspector来完成(我知道这不是同时运行两者的答案,但对我有效)。

以以下方式启动您的应用程序:

node-inspector --save-live-edit & \
node --debug /app/server.js

0

由于我正在使用Linux,所以我基于rpaskett的答案编写了一个bash脚本,这样你就不需要每次记住那个尴尬的命令。

然而,我注意到你在评论中说你正在运行Windows。以下是您可以选择的一些选项:

您可以将bash脚本转换为Windows批处理并将其保存为C:\Windows\System32\node-DEV.bat。我已经这样做了,在我的Windows PC上它可以工作:

@echo off
echo Starting DEV environment for %1
start node-inspector
nodemon --debug %1

然后你应该能够运行node-DEV server.js

另一个选择是,你可以运行像nodedev这样的东西,它是用Node.js编写的,因此平台无关,尽管看起来好像有一段时间没有更新了。

或者,如果你有一个Cygwin环境,甚至可以在其中运行bash脚本。


0
{
    "scripts": {
        "dev": "npx nodemon --exec \"node  --inspect --debug-port=0.0.0.0  src/index.js\""
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接