При запуске тестов с использованием мокко или подобных ему, если тесты терпят неудачу, и, таким образом, бегун выходит с ненулевым кодом статуса, nodemon, кажется, думает, что что-то сломано в процессе, и умирает, не наблюдая за изменениями. Есть ли способ отказаться от такого поведения?
Вот результат, кстати. Как видите, я использую сценарий, определенный в package.json, для запуска nodemon и mocha ( nodemon -x "_mocha -R min $@"
,) не уверен, имеет ли это значение.
$ 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
Да, это _должно_ работать. Я делаю нечто подобное в других проектах. Я чувствую, что это связано с $@
. Какую ценность вы ожидаете от этого?
Иногда я использую его для определения того, какие тесты запускаются, и для передачи дополнительных параметров в Mocha, если мне это нужно. Но это прекрасно работает, это всегда терпит неудачу, когда в моем коде есть исключения, либо потому, что я их сам выбрасываю, либо из-за болванов. Раньше я использовал mocha -w
но он, как известно, плохо справлялся с исключениями, а также не вносил изменений в других частях проекта, что прекрасно делает nodemon.
Я посмотрю, смогу ли я придумать меньший репродукционный футляр в ближайшие несколько дней. Я хотел бы сказать, что я также смогу увидеть исправление и PR, но я боюсь, что у меня, вероятно, не будет на это времени, поэтому я бы не стал слишком обещать.
@mstade Я думаю, что это регресс 1.3.x. Заставил вернуться на 1.2.x.
Я сталкиваюсь с той же проблемой при выполнении теста $ npm run test
[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)
Мой скрипт package.json
"scripts": {
"server": "nodemon ./server.js localhost 5000",
"test": "PORT=8000 nodemon --ext js --watch ./ --exec 'mocha ./test' --delay 1"
},
Для тех, кто придет позже, вы можете обойти эту проблему, просто добавив || true
чтобы заставить nodemon думать, что это удалось.
nodemon --exec "your_command_stuff || true"
Похоже, это дубликат №627, где они сообщают, что это происходит именно тогда, когда процессы завершаются с кодом ошибки 2. ENOENT: No such file or directory
@jayphelps большое спасибо.
мой тестовый скрипт выглядит так, надеюсь, кому-то поможет!
"test": "nodemon --watch . --exec 'mocha ./test/index.js || true'"
Эта проблема была автоматически помечена как неактивная и устаревшая, поскольку в последнее время не было активности. Он будет автоматически закрыт, если больше не будет активности. Если вы считаете, что это неправильно или проблема все еще не устранена , просто @remy (попробует!)
Спасибо за участие <3
Попробуйте использовать это
nodemon --exec mocha -R min
не используйте одинарные или двойные кавычки
"test": "NODE_ENV=test nodemon --exec mocha --exit -R spec"
И если вы запустите:
npm test dir/file.js
dir/file.js
будет добавлено к сценарию тестирования, поэтому вы можете тестировать отдельные файлы.
При быстром двойном сохранении файла тесты также будут запускаться дважды, что может быть нежелательно.
Это сработало для меня:
"start": "nodemon ./bin/www --exec mocha ./test.js -R min"
Самый полезный комментарий
Для тех, кто придет позже, вы можете обойти эту проблему, просто добавив
|| true
чтобы заставить nodemon думать, что это удалось.