Il motivo per cui lo chiedo è perché Node.js su ubuntu non sembra avere la funzione fs.exists(). Anche se posso richiamarlo quando eseguo Node.js sul mio Mac, quando eseguo il deploy sul server, fallisce con un errore che dice che la funzione non esiste.Come verificare se esiste un file o una directory senza utilizzare fs.exists?
Ora, sono consapevole che alcune persone considerano un "anti-pattern" per verificare se esiste un file e quindi provare a modificarlo/aprirlo, ecc., Ma nel mio caso, non ho mai cancellato questi file, ma continuo a è necessario verificare se esistono prima di scriverli.
Quindi, come posso verificare se la directory (o il file) esiste?
EDIT:
Questo è il codice corro in un file chiamato 'temp.':
var fs=require('fs');
fs.exists('./temp.js',function(exists){
if(exists){
console.log('yes');
}else{
console.log("no");
}
});
Sul mio Mac, funziona benissimo. Su Ubuntu ottengo l'errore:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^TypeError: Object #<Object> has no method 'exists'
at Object.<anonymous> (/home/banana/temp.js:2:4)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:32)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:41)
Sul mio Mac - Versione: v0.13.0-pre Su Ubuntu - Versione: v0.6.12
La tua domanda è sbagliata, si deve andare "Perché fs.exists() manca?". Potresti aggiungere quali versioni di NodeJs hai sul tuo PC e Mac? Che errore ottieni? Qualcosa come "esiste non è una funzione"? Altri metodi FS tipici mancano su quell'oggetto 'fs'? Come si richiede 'fs'? –
Sto usando Ubuntu e il tuo codice funziona bene per me. Quindi è un problema sulla tua macchina specifica. Come hai installato il nodo? Quale versione di Node e Ubuntu stai usando? –
Probabilmente è dovuto al fatto che in NodeJs 0.6 il metodo 'exists()' era situato nel modulo 'path': http://web.archive.org/web/20111230180637/http://nodejs.org/api /path.html –