Node.js klasör veya kullanmak mevcut oluşturun
Ben zaten Node.js ve eğer bir şey kaçırdıysam, parametreleri belirli işlemleri içeren ne söylemez sürece, özellikle fs.mkdir() belgeleri okudum. Belgelerinde gördüğünüz gibi, çok fazla değil.
Şu anda, bir klasör oluşturun ya da mevcut bir yerine kullanmaya çalışır bu kod var:
fs.mkdir(path,function(e){
if(!e || (e && e.code === 'EEXIST')){
//do something with contents
} else {
//debug
console.log(e);
}
});
Ama bunu doğru şekilde yapmak olduğunu merak ediyorum? Kodu kontrol EEXIST doğru yolu klasörü zaten var olduğunu bilmek? Dizin yapmadan önce fs.stat() yapabileceğimi biliyorum, ama o zaten dosya sistemi için iki isabet olurdu.
İkinci olarak, hata nesneleri içerir ne gibi ayrıntıları içeren Node.js tam ya da en azından daha ayrıntılı bir belge yok, ne parametreleri vb anlamına gelir.
CEVAP
try {} catch {}, Bu çok nazikçe bir yarış durumu karşılaşmadan elde edebilirsiniz kullanarak:
Hataya dayanıklı fs.mkdirSync(path)
var mkdirSync = function (path) {
try {
fs.mkdirSync(path);
} catch(e) {
if ( e.code != 'EEXIST' ) throw e;
}
}
Açıklama
Fonksiyonun her iki versiyonda da Düğüm dizini oluşturmaya çalışır ve eğer bir istisna bunu yaparken karşılaşırsa, bir özel durum oluşturur. catch {} yan, biz eğer hata kodu ise eğer hiçbir şey olmamış gibi komut dosyası yürütülmesine devam dizinin var demektir EEXIST,. Eğer hata kodu, bir hata atmalıyız olsa bile EEXIST değil, muhtemelen EACCES gibi dosya sisteminin bir durum ile karşı karşıyayız çünkü (izin verilmedi).
Örnekler
Hadi dizinleri ./first/second/third ./first/second/fourth belirli oluÅŸturun:
var fs = require('fs')
, path = require('path');
var mkdirSync = function (path) {
try {
fs.mkdirSync(path);
} catch(e) {
if ( e.code != 'EEXIST' ) throw e;
}
}
Yöntem 1: Doğrusal
mkdirSync( path.join('first') );
mkdirSync( path.join('first', 'second') );
mkdirSync( path.join('first', 'second', 'third') );
mkdirSync( path.join('first', 'second') ); // Just to demonstrate fault tolerance
mkdirSync( path.join('first', 'second', 'fourth') );
Yöntem 2: mkdir -p-mesela özyineleme
var mkdirpSync = function (dirpath) {
var parts = dirpath.split(path.sep);
for( var i = 1; i <= parts.length; i ) {
mkdirSync( path.join.apply(null, parts.slice(0, i)) );
}
}
mkdirpSync('first/second/third');
mkdirpSync('first/second/fourth');

Nasıl mevcut Heroku bir uygulama ile b...
İndirin tek bir klasör veya bir GitHub...
bir WordPress kullanmak VEYA Seçici?...
Kütüphane node.js kullanmak için webso...
Nasıl TortoiseSVN başka bir klasördeki...