2015-02-16 17 views
6

Próbuję zapisać plik z danymi uwierzytelniania użytkowników na dysku. Aby to osiągnąć, napisałem następującą funkcję:fs.writeFile() nie zwraca odpowiedzi zwrotnej

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(); 
    } 
    }); 
} 

Ale nigdy nie wywołuje oddzwaniania. Spojrzałem na nodeJS docs dla fs i wydaje się, że wszystko to wypisuje. Wydaje się również, że wszystkie inne asynchroniczne wykonywanie zostało zatrzymane.

Po raz pierwszy opracowuję coś poważnego w węźle nodeJS, więc moje doświadczenie w tym środowisku nie jest aż tak duże.

+0

Po prostu być całkowicie jasne: "nigdy nie wywołuje oddzwaniacza" masz na myśli, że twoje wezwania 'console.log' nigdy nie działają, lub czy callbacks' success'/'fail' nie działają? – apsillers

+0

Wydaje się, że zarówno wykonywanie, jak i wykonywanie wszystkich innych połączeń zostało zatrzymane. – Feanaro

Odpowiedz

2

Twój kod wygląda dobrze, kopiuję & wklej i uruchom go, dzwoniąc pod numer writeAuthFile({test: 1});, plik auth.json został utworzony. A więc, błąd mb gdzieś wyżej? dodaj console.log po linii var fs = require('fs'); i sprawdź.

+0

Miałem 'console.log()' po 'var fs = require ('fs');' i działało dobrze. Również wszystko wydaje się zatrzymywać. Po wywołaniu 'writeAuthFile()' robię wszystkie inne rzeczy, które teraz się nie zdarzają. Może ma to coś wspólnego z uprawnieniami, a może z tworzeniem uchwytu pliku. Dokumenty mówią, że powinien on przejść do wywołania zwrotnego i zapełnić parametr "error". – Feanaro

+0

OK, sprawdź swoje 'dane', mb, czy zawiera coś nie tak dla' JSON.stringify'? – Daniel

+0

Dziękuję bardzo! Wydaje się, że jest to wywołanie 'JSON.stringify()'. Co jest bardzo dziwne, obiekt został utworzony z łańcucha JSON przed funkcją 'JSON.parse()'. – Feanaro