Короткий ответ: это не Node, файл действительно изменен дважды.
Длинный ответ
У меня очень похожий подход, который я использую для своей настройки разработки. Мой менеджерский процесс просматривает все исходные файлы js, если это машина для разработки, и перезапускает дочерние элементы в кластере.
Я не обращал на это никакого внимания, так как это была просто настройка разработки; но после того, как я прочитал ваш вопрос, я посмотрел на него и понял, что у меня такое же поведение.
Я редактирую файлы на своем локальном компьютере, и мой редактор обновляет их по sftp при каждом сохранении. При каждом сохранении событие изменения файла запускается дважды.
Я проверил listeners('change') для объекта FSWatcher, который возвращается вызовом fs.watch; но он показывает мой обработчик событий только один раз.
Затем я сделал тест, который должен был сделать первым: «touch file.js» на сервере, и он сработал только один раз. Так что для меня это был не Node; но файл действительно был изменен дважды. Когда файл открывается для записи (вместо добавления), он, вероятно, вызывает изменение, поскольку он очищает содержимое. Затем, когда записывается новый контент, он запускает событие во второй раз.
Это не вызывает у меня никаких проблем; но если вы хотите предотвратить это, вы можете сделать элемент управления нечетным-четным в своей функции обработчика событий, сохранив номера вызовов для каждого файла и делая все, что вы делаете, только при вызовах с четным индексом.
person
hasanyasin
schedule
04.07.2012