如何在WebStorm中运行nodemon?

94

我想在WebStorm IDE(版本7)中使用nodemon。Nodemon会监视源文件夹中的一个或多个文件,并在其中一个源文件更改时重新启动节点进程(在这种情况下是Express服务器)。

如何配置WebStorm在运行配置中使用nodemon,使得节点进程自动重启?

如果没有nodemon,我可以在WebStorm中使用以下配置,但每当我更改源文件时都必须重新启动节点进程:

  • 节点解释器:/usr/local/bin/node
  • 工作目录:/Users/foo/test
  • JavaScript文件:server.js

这将生成一个在指定目录中运行node server.js的运行配置。

从命令行中,我可以使用以下命令来使用nodemon监视文件更改:nodemon server.js在项目目录中。

我需要如何更改WebStorm配置以便也使用nodemon


这个问题似乎与这个问题类似:https://dev59.com/K2gu5IYBdhLWcg3wpYnJ?rq=1 - nwinkler
请查看我的答案 https://stackoverflow.com/a/52463378/7350853,它使用了迄今为止最新的Webstorm版本。 - iwaduarte
19个回答

160

看起来在使用最新版本的nodemon和Webstorm 7或8时,就不再需要使用--exec的解决方法了。

你只需通过在控制台中运行which nodemon(例如/usr/local/bin/nodemon)获取其路径,然后在“Node参数”下指定你的nodemon路径:

Webstorm with nodemon

@Bela Clark,感谢确认。


如果您从which nodemon命令中没有找到nodemon,则应该将其安装到您的package.json文件中,即:project_dir/node_modules/.bin/nodemon

然后在Webstorm的运行/调试配置中,将节点参数设置为:

:path_to_project_dir/node_modules/.bin/nodemon

你应该将调试/运行配置保存到文件中,这样你的团队成员也可以像你一样轻松地调试/运行你的nodejs应用程序。

在此输入图片描述

这将把配置保存到某个.xml文件中,例如下面的示例。

<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="index.js" type="NodeJSConfigurationType" path-to-node="$USER_HOME$/.nvm/versions/node/v19.4.0/bin/node" nameIsGenerated="true" node-parameters="../node_modules/.bin/nodemon" path-to-js-file="index.js" working-dir="$PROJECT_DIR$/nodejs27/node27_sequelize_apiapp/src">
    <method v="2" />
  </configuration>
</component>

刚试了一下,现在完美地运行了。感谢提供更新的答案! - nwinkler
9
@bernhardw,使用这些配置启动调试器时,WebStorm不会在断点处停止。你知道原因吗? - Nik Sumeiko
4
通过遵循这些说明:https://vcfvct.wordpress.com/2015/02/13/debug-nodejs-with-nodemon-and-intellij/,我成功让Nodemon和断点正常工作。 请注意,我使用了--debug-brk而不是--debug。 - n00b
1
为了使调试工作正常,我不得不使用IntelliJ的Live Edit插件而不是nodemon。 - engin
1
好的回答!谢谢。 - Julien
显示剩余5条评论

40

这是 Windows 的解决方案

您可以直接使用 nodemon.cmd 代替 node,例如:

Node interpreter : C:\MyPath\To\nodemon.cmd
Node parameters : /*Empty for me*/
Node WorkingDirectoy : C:\Users\MyUserName\Desktop\DirectoryContainingMyIndex.js
JavaScriptFile : app\index.js /*or just index.js depending on your config*/

然后:

在此输入图片描述

希望它能对你有所帮助。


我认为这是最直接的答案。 - Paul Wade
6
你好,我尝试了这个方法,但是当我更改一个文件时,Web Storm控制台会询问我“终止批处理任务(Y/N)?”。同时我发现执行的命令是: "C:\Program Files (x86)\JetBrains\WebStorm 8.0.4\bin\runnerw.exe" C:\Users\xyz\AppData\Roaming\npm\nodemon.cmd --debug-brk=27344 --nolazy -q app.js。我有遗漏什么吗? - Tomer Cagan
1
针对“终止批处理作业”的问题,只需将“< nul”(不包括引号)添加到“应用程序参数”输入中即可。 (答案在此处找到:http://superuser.com/a/498798) - Tobias Weichart
为什么这个被点赞了?它不会工作,当nodemon重新启动时,它不会添加初始启动的“<nul”,所以你仍然会得到“终止批处理作业(Y/N)?” - KVM
1
在Windows中的位置为C:\ Users <user> \ AppData \ Roaming \ npm \ nodemon.cmd。 - Frido Emans

20

要安装nodemon,请使用以下命令(如果需要,请使用sudo命令以root权限运行安装):

npm install -g nodemon

这将在您的计算机上全局安装nodemon

然后,在您的WebStorm Run Configuration中,添加以下内容,其余保持不变:

  • Node参数:/usr/local/bin/nodemon --exec /usr/local/bin/node

这将指示节点解释器使用以下命令行执行nodemon脚本:node /usr/local/bin/nodemon --exec /usr/local/bin/node server.js

--exec部分很重要,否则会出现以下错误:

/usr/local/bin/node /usr/local/bin/nodemon server.js
4 Oct 13:56:50 - [nodemon] v0.7.10
4 Oct 13:56:50 - [nodemon] to restart at any time, enter `rs`
4 Oct 13:56:50 - [nodemon] watching: /Users/foo/test
execvp(): No such file or directory
4 Oct 13:56:50 - [nodemon] starting `node server.js`
4 Oct 13:56:50 - [nodemon] exception in nodemon killing node
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

错误似乎是由于WebStorm在其路径上找不到node可执行文件引起的。

解决方法是使用参数--exec /usr/local/bin/node指定node可执行文件的位置。

使用这些设置,当从WebStorm的运行配置中运行时,nodemon可以正常工作。

对于类似nodemon的某些工具,例如node-supervisor,可能也需要使用相同的技巧。


1
这适用于运行配置,但在调试时不起作用。有没有想过在WebStorm中使用nodemon进行调试? - yves amsellem
3
至少在WebStorm 8 EAP和nodemon 1.0.15中,您不再需要指定“--exec”。我所要做的就是在“Node参数”中使用“/usr/local/bin/nodemon”。 - bernhardw
@bernhardw:我可以确认相同。 - Bala Clark

17

我使用的是Windows系统,但对于我来说,nodemon无法正常工作(不知道为什么),但Jetbrains的某位建议尝试使用supervisor:

  1. 我安装了supervisor:npm install supervisor -g

  2. 然后找到supervisor的安装位置,在我的电脑上是: C:\Users\AlinC\AppData\Roaming\npm\node_modules\supervisor\lib\cli-wrapper.js –no-restart-on error

  3. 我回到Intellij:编辑配置 -> 节点参数 -> 并添加了以下内容: C:\Users\AlinC\AppData\Roaming\npm\node_modules\supervisor\lib\cli-wrapper.js –no-restart-on error

编辑配置

节点参数


1
要在断点处停止,您应该添加以下内容: --debug-brk,完整字符串为 C:\Users\<username>\AppData\Roaming\npm\node_modules\supervisor\lib\cli-wrapper.js no-restart-on error --debug-brk 请查看JetBrains的网站http://www.jetbrains.com/phpstorm/webhelp/run-debug-configuration-node-js.html。 - uzay95
1
无法在Windows 8上使用Webstorm 9启动nodemon,但这个方法很有效。 - Simon Trewhella
1
在我的电脑上(Windows 上的 Webstorm 11)可以运行,但断点不起作用。我尝试添加 --debug-brk 但没有成功。 - electrotype
使用 --inspect 标志启动 nodemon,然后附加调试器。详见:在 IntelliJ IDEA 中运行和调试 Node.js - brgs

17

对于那些想在Windows 10中找到解决方案的人,这是我的配置。它不会显示“终止批处理”并且完美地工作。

输入图像描述

你只需按一次调试按钮,然后就可以随意保存更改文件,服务器将以调试模式重新启动。所有断点都可以完美工作。


这是调试的有效答案。我只设置了节点参数。节点参数作为文本(更改用户名):c:\ users \ username \ AppData \ Roaming \ npm \ node_modules \ nodemon \ bin \ nodemon.js --debug = 3001 - Alexey Obukhov
这对我没用。添加--debug=3001参数导致nodemon崩溃。 - JCF
谢谢。基本运行正常,调试也没有任何问题!这应该是最佳答案! - Georgi Peev

9

对于Windows用户,请设置:

Node解释器:node.exe的路径,例如c:\program files\node\node.exe

Node参数:C:\Users\YOURUSER\AppData\Roaming\npm\node_modules\nodemon\bin\nodemon.js


这对我很有效!调试和断点完美运行。 Node版本10.15.1 nodemon版本1.18.10 Webstorm 2018.3.5 - JCF

5
你也可以使用nvm,并且调试仍然有效。
测试过Node.js 8.1.0和Webstorm 2017.2。
首先确保你使用正确的版本(在我的情况下是v8.1.0),并全局安装nodemon。
nvm use v8.1.0
npm install -g nodemon

首先,打开运行/调试配置,并使用正确的node解释器创建一个新的配置。

Node参数应该是:

MAC

/Users/[YOUR_USER]/.nvm/versions/node/v8.1.0/bin/nodemon --inspect=3001

LINUX

/usr/local/nvm/versions/node/v8.1.0/bin/nodemon --inspect=3001

请负责保存和调试 :)

Node.js nodemon webstorm debug


5
如果您已经像全局库一样安装了nodemon,只需在node参数中设置:

C:\Users\${yourUser}\AppData\Roaming\npm\node_modules\nodemon\bin\nodemon.js

nodemon in webstorm


通过 nvm 和 npm 14.7.0 运行得非常好。 - Eugene Zalivadnyi

5

这是唯一对我有效的方法:

  1. 添加一个新的package.json节点运行脚本命令:

enter image description here

  1. 创建一个NPM配置(而不是node配置)
  2. 选择“start-watch”作为命令

enter image description here

对我来说,这个方法可以轻松进行调试/断点,没有任何问题或额外的麻烦。


似乎如果你这样做,“异常中断”不会在异常时中断:( - Mr_E
在我的MacOS 13.1上,使用node 18它对我非常有效,可以很好地停在断点处。 相反,使用Node配置(如大多数顶级答案中所述)无法启动。 - Denis P

4
这是在Windows 7 + WebStorm 8.0.4上适用的配置。如果我把nodemon.cmd作为节点解释器,就会一直出现“终止批处理作业(Y/N)?”的提示。

Nodemon + Webstorm on Windows


请查看我的关于Windows的问题答案,我认为您指错了nodemon.cmd文件。 - Alexander Mills

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