UNPKG

9.59 kBMarkdownView Raw
1# FAQ
2
3This is being added to as common issues occur on the [issues](http://github.com/remy/nodemon/issues), and where appropriate the answers will be added here.
4
5This is a working document, and if it makes sense, I'll take pull requests to help make it better.
6
7## nodemon doesn't work with my REPL
8
9Create an nodemon.json file with the setting:
10
11```js
12{
13 "restartable": false
14}
15```
16
17This will leave the STDIN to your application rather than listening for the `rs` command to restart.
18
19# My script arguments are being taken by nodemon
20
21Use the `--` switch to tell nodemon to ignore all arguments after this point. So to pass `-L` to your script instead of nodemon, use:
22
23```
24$ nodemon app.js -- -L -opt2 -opt3
25```
26
27nodemon will ignore all script arguments after `--` and pass them to your script.
28
29# Error: "process failed, unhandled exit code (2)"
30
31Nodemon will look for exit signals from the child process it runs. When the exit code is `2`, nodemon throws an error. Typically this is because the arguments are bad for the executing program, but it can also be due other reasons.
32
33For example, mocha@3.x will exit with `2` on failing tests. To handle the exit code in a way that nodemon can consume, manually exit the process, i.e.:
34
35```bash
36nodemon -x 'mocha test/bad.test.js || exit 1'
37```
38
39# Can't install nodemon: permission issue
40
41You may need to install nodemon using `sudo` (which isn't recommended, but I understand it's unavoidable in some environments). If the install fails with this appearing in the npm error log, then you need the following workaround.
42
43```
44gyp WARN EACCES user "root" does not have permission to access the dev dir "<some-local-dir>"
45```
46
47Try to re-install adding `--unsafe-perm` to the arguments:
48
49```
50sudo npm install -g nodemon --unsafe-perm
51```
52
53Ref [#713](https://github.com/remy/nodemon/issues/713)
54
55# Help! My changes aren't being detected!
56
57nodemon (from 1.4.2 onwards) uses [Chokidar](https://www.npmjs.com/package/chokidar) as its underlying watch system.
58
59If you find your files aren't being monitored, either nodemon isn't restarting, or it reports that zero files are being watched, then you may need the polling mode.
60
61To enable polling use the the legacy flag either via the terminal:
62
63```shell
64$ nodemon --legacy-watch
65$ nodemon -L # short alias
66```
67
68Or via the `nodemon.json`:
69
70```json
71{
72 "legacyWatch": true
73}
74```
75
76## nodemon tries to run two scripts
77
78If you see nodemon trying to run two scripts, like:
79
80```
819 Dec 23:52:58 - [nodemon] starting `node ./app.js fixtures/sigint.js`
82```
83
84This is because the main script argument (`fixtures/sigint.js` in this case) wasn't found, and a `package.json`'s main file _was_ found. ie. to solve, double check the path to your script is correct.
85
86## What has precedence, ignore or watch?
87
88Everything under the ignore rule has the final word. So if you ignore the `node_modules` directory, but watch `node_modules/*.js`, then all changed files will be ignored, because any changed .js file in the `node_modules` are ignored.
89
90However, there are defaults in the ignore rules that your rules will be merged with, and not override. To override the ignore rules see [overriding the underlying default ignore rules](#overriding-the-underlying-default-ignore-rules).
91
92## Overriding the underlying default ignore rules
93
94The way the ignore rules work is that your rules are merged with the `ignoreRoot` rules, which contain `['.git', 'node_modules', ...]`. So if you ignore `public`, the ignore rule results in `['.git', 'node_modules', ..., 'public']`.
95
96Say you did want to watch the `node_modules` directory. You have to override the `ignoreRoot`. If you wanted this on a per project basis, add the config to you local `nodemon.json`. If you want it for all projects, add it to `$HOME/nodemon.json`:
97
98```json
99{
100 "ignoreRoot": [".git"]
101}
102```
103
104Now when ignoring `public`, the ignore rule results in `['.git', 'public']`, and nodemon will restart on `node_modules` changes.
105
106## nodemon doesn't work with fedora
107
108Fedora is looking for `nodejs` rather than `node` which is the binary that nodemon kicks off.
109
110A workaround is to make sure that `node` binary exists in the `PATH`:
111
112```bash
113sudo ln -s /usr/bin/nodejs /usr/local/bin/node
114```
115
116Alternatively the `--exec nodejs` option can be used.
117
118Fedora and Ubuntu pakage node as nodejs, because node.dpkg is
119
120> Description-en: Amateur Packet Radio Node program
121> The node program accepts TCP/IP and packet radio network connections and
122> presents users with an interface that allows them to make gateway connections
123> to remote hosts using a variety of amateur radio protocols.
124> They make the binary is nodejs, rather than node. So long as you're not using that Packet Radio Node Program mentioned above the workaround will work.
125
126Thank you [@EvanCarroll](https://github.com/remy/nodemon/issues/68#issuecomment-13672509)
127
128## Using nodemon with forever
129
130If you're using nodemon with [forever](https://github.com/foreverjs/forever) (perhaps in a production environment), you can combine the two together. This way if the script crashes, forever restarts the script, and if there are file changes, nodemon restarts your script. For more detail, see [issue 30](https://github.com/remy/nodemon/issues/30).
131
132To achieve this you need to add the following on the call to `forever`:
133
134* Use forever's `-c nodemon` option to tell forever to run `nodemon` instead of `node`.
135* Include the nodemon `--exitcrash` flag to ensure nodemon exits if the script crashes (or exits unexpectedly).
136* Tell forever to use `SIGTERM` instead of `SIGKILL` when requesting nodemon to stop. This ensures that nodemon can stop the watched node process cleanly.
137* Optionally add the `--uid` parameter, adding a unique name for your process. In the example, the uid is set to `foo`.
138
139```bash
140forever start --uid foo --killSignal=SIGTERM -c 'nodemon --exitcrash' server.js
141```
142
143To test this, you can kill the server.js process and forever will restart it. If you `touch server.js` nodemon will restart it.
144
145To stop the process monitored by forever and nodemon, simply call the following, using the `uid` we assigned above (`foo`):
146
147```bash
148forever stop foo
149```
150
151This will stop both nodemon and the node process it was monitoring.
152
153Note that I _would not_ recommend using nodemon in a production environment - but that's because I wouldn't want it restart without my explicit instruction.
154
155## What does "verbose" give me?
156
157The `--verbose` (or `-V`) puts nodemon in verbose mode which adds some detail to starting and restarting.
158
159Additional restart information:
160
161* Which nodemon configs are loaded (local and global if found)
162* Which ignore rules are being applied
163* Which file extensions are being watch
164* The process ID of your application (the `child pid`)
165
166For example:
167
168```text
16914 Apr 15:24:58 - [nodemon] v1.0.17
17014 Apr 15:24:58 - [nodemon] reading config /Users/remy/Sites/jsbin-private/nodemon.json
17114 Apr 15:24:58 - [nodemon] to restart at any time, enter `rs`
17214 Apr 15:24:58 - [nodemon] ignoring: /Users/remy/Sites/jsbin-private/.git/**/* node_modules/**/node_modules
17314 Apr 15:24:58 - [nodemon] watching: /Users/remy/Sites/jsbin/views/**/* /Users/remy/Sites/jsbin/lib/**/* ../json/*.json config.dev.json
17414 Apr 15:24:58 - [nodemon] watching extensions: json,js,html
17514 Apr 15:24:58 - [nodemon] starting `node run.js`
17614 Apr 15:24:58 - [nodemon] child pid: 9292
177```
178
179When nodemon detects a change, the following addition information is shown:
180
181* Which file(s) triggered the check
182* Which (if any) rules the file matched to cause a subsequent restart
183* How many rules were matched and out of those rules, how many cause a restart
184* A list of all the files that _successfully_ caused a restart
185
186For example, on `lib/app.js` being changed:
187
188```text
18914 Apr 15:25:56 - [nodemon] files triggering change check: ../jsbin/lib/app.js
19014 Apr 15:25:56 - [nodemon] matched rule: **/Users/remy/Sites/jsbin/lib/**/*
19114 Apr 15:25:56 - [nodemon] changes after filters (before/after): 1/1
19214 Apr 15:25:56 - [nodemon] restarting due to changes...
19314 Apr 15:25:56 - [nodemon] ../jsbin/lib/app.js
194
19514 Apr 15:25:56 - [nodemon] starting `node run.js`
19614 Apr 15:25:56 - [nodemon] child pid: 9556
197```
198
199## My .nodemonignore is being ignored
200
201The new `nodemon.json` supersedes the `.nodemonignore` file, so if you have both, the `.nodemonignore` is not used at all.
202
203Note that if you have a `nodemon.json` in your `$HOME` path, then this will also supersede the old ignore file (and the _legacy_ format config is ignored).
204
205## nodemon does nothing
206
207On Ubuntu globally installed node applications have been found to have no output when they're run. This _seems_ to be an issue with node not being correctly installed (possibly linked to the binary having to be called `nodejs`).
208
209The solution (that's worked in the past) is to install [nvm](https://github.com/creationix/nvm) first and using it to install node, _rather_ than using `apt-get` (or similar tools) to install node directly.
210
211## If nodemon is facing the watch errors (Mac & Linux)
212
213Try the following command on terminal:
214
215```bash
216echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
217```
218
219## Error: Cannot find module 'internal/util/types'
220
221If you see the error `Cannot find module 'internal/util/types'`, the error is solved with a clean npm cache and trying to reinstall the dependency you're working with.
222
223A start is to use the following commands:
224
225```
226sudo npm cache clean --force
227sudo npm i -g npm
228```
229
230Otherwise see [issue #1124](https://github.com/remy/nodemon/issues/1124) for further suggestions.