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
(это означает, что эта страница учебника может нуждаться в некоторых исправлениях)