Nodemon: Die richtige Verwendung von Nodemon mit Testläufern?

Erstellt am 8. Feb. 2015  ·  12Kommentare  ·  Quelle: remy/nodemon

Wenn beim Ausführen von Tests mit Mokka oder ähnlichem die Tests fehlschlagen und der Runner daher mit einem Statuscode ungleich Null beendet wird, scheint Nodemon zu denken, dass etwas mit dem Prozess gebrochen ist und stirbt, ohne auf Änderungen zu achten. Gibt es eine Möglichkeit, dieses Verhalten zu deaktivieren?

stale

Hilfreichster Kommentar

Für jeden, der später kommt, können Sie dieses Problem umgehen, indem Sie einfach || true anhängen, um Nodemon dazu zu bringen, zu glauben, dass es erfolgreich war.

nodemon --exec "your_command_stuff || true"

Alle 12 Kommentare

Hier ist übrigens die Ausgabe. Wie Sie sehen können, verwende ich ein in package.json definiertes Skript, um nodemon und mocha ( nodemon -x "_mocha -R min $@" ,) auszuführen, bin mir nicht sicher, ob dies einen Unterschied macht.

$ npm run test-dev

> [email protected] test-dev /Users/mstade/dev/funkis
> nodemon -x "_mocha -R min $@"

8 Feb 15:57:48 - [nodemon] v1.3.6
8 Feb 15:57:48 - [nodemon] to restart at any time, enter `rs`
8 Feb 15:57:48 - [nodemon] watching: *.*
8 Feb 15:57:48 - [nodemon] starting `_mocha -R min `


  545 passing (670ms)
  2 failing

  1) Protocol when called with an empty signatures object should throw a TypeError:
     AssertionError: function (rest) { return apply(fn, this, argc, arguments) } must throw function TypeError() { [native code] }
      at Context.<anonymous> (/Users/mstade/dev/funkis/test/Protocol.js:15:39)
      at Test.Runnable.run (/Users/mstade/dev/funkis/node_modules/mocha/lib/runnable.js:221:32)
      at Runner.runTest (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:374:10)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:452:12
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:299:14)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:309:7
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:247:23)
      at Immediate._onImmediate (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:276:5)
      at processImmediate [as _immediateCallback] (timers.js:321:17)

  2) Protocol when called with a name, and some signatures should set immutable and enumerable properties on the protocol:
     TypeError: Signatures must be an object.
      at TypeError (native)
      at new Protocol (/Users/mstade/dev/funkis/lib/Protocol.js:8:34)
      at Protocol (/Users/mstade/dev/funkis/lib/Protocol.js:5:12)
      at Context.<anonymous> (/Users/mstade/dev/funkis/test/Protocol.js:21:15)
      at Test.Runnable.run (/Users/mstade/dev/funkis/node_modules/mocha/lib/runnable.js:221:32)
      at Runner.runTest (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:374:10)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:452:12
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:299:14)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:309:7
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:247:23)
      at Immediate._onImmediate (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:276:5)
      at processImmediate [as _immediateCallback] (timers.js:321:17)



util.error: Use console.error instead
[nodemon] failed to start process, possible issue with exec arguments
exception in nodemon killing node
Error: Uncaught, unspecified "error" event.
    at Error (native)
    at emit (events.js:78:13)
    at ChildProcess.<anonymous> (/Users/mstade/dev/funkis/node_modules/nodemon/lib/monitor/run.js:133:11)
    at ChildProcess.emit (events.js:101:17)
    at Process.ChildProcess._handle.onexit (child_process.js:1038:12)

----------------------------------------------------------
If appropriate, please file an error with the output from:
$ node /Users/mstade/dev/funkis/node_modules/.bin/nodemon -x _mocha -R min  --dump
At http://github.com/remy/nodemon/issues/new
----------------------------------------------------------


npm ERR! Darwin 14.1.0
npm ERR! argv "/usr/local/opt/nvm/versions/io.js/v1.0.4/bin/iojs" "/usr/local/opt/nvm/versions/io.js/v1.0.4/bin/npm" "run" "test-dev"
npm ERR! node v1.0.4
npm ERR! npm  v2.3.0
npm ERR! code ELIFECYCLE
npm ERR! [email protected] test-dev: `nodemon -x "_mocha -R min $@"`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] test-dev script 'nodemon -x "_mocha -R min $@"'.
npm ERR! This is most likely a problem with the funkis package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     nodemon -x "_mocha -R min $@"
npm ERR! You can get their info via:
npm ERR!     npm owner ls funkis
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/mstade/dev/funkis/npm-debug.log

Ja, das _sollte_ funktionieren. Ähnliches mache ich bei anderen Projekten. Ich habe ein _Gefühl_, dass es mit $@ zu tun hat. Welchen Wert erwarten Sie davon?

Ich verwende es manchmal, um zu bestimmen, welche Tests ausgeführt werden, und um bei Bedarf zusätzliche Parameter an Mocha zu übergeben. Aber das funktioniert gut, das schlägt immer nur dann fehl, wenn es Ausnahmen in meinem Code gibt, entweder weil ich sie selbst werfe oder wegen Booboos. Ich habe zuvor mocha -w aber es war notorisch schlecht im Umgang mit Ausnahmen und hat auch keine Änderungen an anderer Stelle im Projekt übernommen, was Nodemon wunderbar macht.

Mal sehen, ob ich in den nächsten Tagen einen kleineren Repro-Koffer auftreiben kann. Ich würde gerne sagen, dass ich auch in der Lage sein würde, einen Fix und eine PR zu sehen, aber ich befürchte, dass ich dafür wahrscheinlich keine Zeit haben werde, also würde ich lieber nicht zu viel versprechen.

@mstade Ich denke, dies ist eine Regression mit 1.3.x. Hat mich dazu gebracht, zu 1.2.x zurückzukehren.

Ich stoße auf das gleiche Problem, wenn ich $npm run test mache

[nodemon] failed to start process, possible issue with exec arguments     
events.js:146                                                                        
    throw err;                                                                     
    ^                                                                             

Error: Uncaught, unspecified "error" event. (2)    
   at emit (events.js:144:17)        
   at ChildProcess.<anonymous> (/usr/lib/node_modules/nodemon/lib/monitor/run.js:124:11)      
   at emitTwo (events.js:87:13)        
   at ChildProcess.emit (events.js:172:7)     
   at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)  

Mein package.json-Skript

"scripts": {
    "server": "nodemon ./server.js localhost 5000",  
    "test": "PORT=8000 nodemon --ext js --watch ./ --exec 'mocha ./test' --delay 1"  
 },

Für jeden, der später kommt, können Sie dieses Problem umgehen, indem Sie einfach || true anhängen, um Nodemon dazu zu bringen, zu glauben, dass es erfolgreich war.

nodemon --exec "your_command_stuff || true"

Es sieht so aus, als ob dies ein Duplikat von #627 ist, wo dies insbesondere dann passiert, wenn die Prozesse mit dem Fehlercode 2 beendet werden. ENOENT: No such file or directory

@jayphelps vielen Dank.

mein Testskript sieht so aus, hoffentlich hilft es jemandem!

"test": "nodemon --watch . --exec 'mocha ./test/index.js || true'"

Dieses Problem wurde automatisch als inaktiv und veraltet markiert, da es in letzter Zeit keine Aktivität hatte. Es wird automatisch geschlossen, wenn keine weitere Aktivität stattfindet. Wenn Sie der Meinung sind, dass dies falsch ist oder das Problem weiterhin besteht, geben Sie einfach eine Antwort in die Kommentare ein und @remy wird (versuchen!)
Vielen Dank für Ihren Beitrag <3

Versuchen Sie es mit diesem

nodemon --exec mokka -R min

keine einfachen oder doppelten Anführungszeichen verwenden

"test": "NODE_ENV=test nodemon --exec mocha --exit -R spec"

Und wenn Sie laufen:

npm test dir/file.js

dir/file.js wird an das Testskript angehängt, sodass Sie einzelne Dateien testen können.

Wenn Sie Ihre Datei zweimal schnell speichern, werden die Tests ebenfalls zweimal ausgeführt, was möglicherweise unerwünscht ist.

Bei mir hat das funktioniert:
"start": "nodemon ./bin/www --exec mocha ./test.js -R min"

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

piton13 picture piton13  ·  3Kommentare

Autre31415 picture Autre31415  ·  4Kommentare

remy picture remy  ·  5Kommentare

endquote picture endquote  ·  4Kommentare

Exeteres picture Exeteres  ·  4Kommentare