2013-03-21 14 views
34

ho un percorso semplice definita con express.js:Verificando writeFileSync scritto correttamente il file

exports.save = function (request, response) 
{ 
    var file = request.body.file; 
    var content = request.body.content; 

    var saved = false; 

    if (fs.existsSync(file)) 
    { 
     saved = fs.writeFileSync(file, content, 'utf8'); 
    } 

    console.log(saved); // undefined or false, never true 

    response.send(saved ? 200 : 500, saved ? 'saved' : 'error'); // 500, error 
}; 

È if (typeof saved === 'undefined') saved = true; l'unica opzione? Sembra hacky.

risposta

49

Secondo node.js source-codefs.writeFileSync non restituisce nulla.

Getta un oggetto Error se qualcosa va storto. Quindi dovresti scrivere fs.writeFileSync(file, content, 'utf8'); all'interno di un blocco try-catch.

+1

Credo che l'eccezione di cattura è la strada da percorrere, grazie. – jolt

+0

Prego :) – fardjad

+0

Il mio codice non genera alcun errore e persino non sta creando il file. fs.writeFileSync (__ dirname + "./../ BusinessNames/currentDB.txt", 'nul.vyp'); . Non creare file perché nul è una parola chiave riservata in windows – Himanshu

5

fs.writeFileSync non restituisce alcun valore, se non si verifica alcuna eccezione significa che il salvataggio è riuscito; altrimenti fallito.

si consiglia di provare la versione asincrona di file letto

fs.exists(file, function (exists) { 
    if (exists) { 
    fs.writeFiles(file, content, 'utf-8', function (err) { 
     if (err) { 
     response.send("failed to save"); 
     } else { 
     response.send("succeeded in saving"); 
     } 
    } else { 
    console.log('file does not exists'); 
    } 
} 
+2

La versione asincrona non si sposa bene con le risposte HTTP, ecco perché sto andando in sincrono. – jolt

+1

Ho saltato i 3 parametri ... :( –

+0

@jolt so che sono in ritardo per la festa ma non vedo nulla di sbagliato nell'usarli con le richieste HTTP. Tutto quello che devi fare è fare l'altra operazione in il callback "success". – Jared

Problemi correlati