2015-02-16 3 views
6

Я пытаюсь записать файл с данными аутентификации пользователей на диск. Для этого я написал следующую функцию:fs.writeFile() не возвращает обратный вызов

function writeAuthFile(data, success, fail) { 
    var fs = require('fs'); 
    fs.writeFile('auth.json', JSON.stringify(data), function(error) { 
    if(error) { 
     console.log('[write auth]: ' + err); 
     if (fail) 
      fail(error); 
    } else { 
     console.log('[write auth]: success'); 
     if (success) 
      success(); 
    } 
    }); 
} 

Но он никогда не вызывает обратный вызов. Я посмотрел на nodeJS docs за fs, и все это, похоже, проверяется. Кроме того, все остальные асинхронные операции, похоже, остановились.

Это первый раз, когда я разрабатываю нечто серьезное в nodeJS, поэтому мой опыт в этой среде не так уж много.

+0

Чтобы быть совершенно понятным: «никогда не вызывает обратный вызов», вы имеете в виду, что ваши вызовы 'console.log' никогда не запускаются или что обратные вызовы' success'/'fail' не запускаются? – apsillers

+0

Как и все другие вызовы, похоже, тоже остановились. – Feanaro

ответ

2

Ваш код выглядит хорошо, я копирую & вставить и запустить его, просто позвонив writeAuthFile({test: 1});, файл auth.json был создан. Итак, ошибка mb где-то выше? Добавить console.log после var fs = require('fs'); линии и испытания.

+0

У меня был 'console.log()' после 'var fs = require ('fs');' и он работал нормально. Также все, кажется, останавливается. После вызова 'writeAuthFile()' я делаю все виды других вещей, которых сейчас нет. Возможно, это имеет какое-то отношение к разрешениям или, возможно, создание дескриптора файла. Документы говорят, что он должен перейти к обратному вызову и заполнить параметр 'error'. – Feanaro

+0

Хорошо, проверьте свои данные, mb содержит что-то не так для 'JSON.stringify'? – Daniel

+0

Большое спасибо! Кажется, это вызов 'JSON.stringify()'. Что очень странно, объект был создан из строки JSON до функции 'JSON.parse()'. – Feanaro

Смежные вопросы