Node.js - запись CSV-файла создает пустой файл в производственном процессе, а в тесте Mocha - нормально

Этот гистограмма показывает фрагмент кода, который сбрасывает объект в файл CSV. Запись файла выполняется с использованием модуля csv-write-stream и возвращает обещание.

Этот код работает безупречно во всех моих тестах Mocha.

Когда код вызывается основным приложением nodejs (приложением REPL на стороне сервера, включающим raw process.stdin а также console.log вызывается как взаимодействие с пользователем), файл CSV создается, но он всегда пуст, и никакие сообщения об ошибках / предупреждениях не отображаются.

Я отлаживал код REPL с node-debug и инструменты разработчика Chrome: я уверен, что обработчики событий WriteStream работают правильно: "ошибка" отсутствует, все "данные", похоже, обрабатываются, "закрывается" запускается, обещание разрешается, как и ожидалось.

Тем не менее, в последнем случае файл всегда равен 0 байтов. Я проверил несколько вопросов и ответов и не могу найти что-то конкретное, как это.

Мои вопросы:

  • я могу пропустить некоторые ошибки? Как я могу быть уверен, что отслеживать все сообщения о записи файла?
  • в каком направлении я мог бы усилить мое расследование? какая другая установка может помочь мне изолировать проблему?
  • поскольку проблема может быть связана с наличием process.stdin в уравнении, как создать простое и легкое взаимодействие с пользователем без необходимости писать веб-приложение?

Я работаю на Windows 7. Узел 6.9.4, npm 3.5.3, csv-write-stream 2.0.0.

1 ответ

Решение

Мне удалось решить эту проблему двумя способами:

  • выполнение обещания после "финишного" события FileWriteStream а не на "конце" события CSVWriteStream
  • удаление process.exit() Я использовал в конце моей работы с process.stdin (это означает, что эта страница учебника может нуждаться в некоторых исправлениях)
Другие вопросы по тегам