2015-10-28 14 views
12

Tôi đang cố xác định xem tệp có tồn tại hay không. Nếu nó không tồn tại, tôi muốn mã của tôi tiếp tục để nó sẽ được tạo ra. Khi tôi sử dụng đoạn mã sau, nếu tệp tồn tại, nó sẽ in ra 'nó tồn tại'. Nếu nó không tồn tại, nó sẽ treo ứng dụng của tôi. Đây là mã của tôi:fs.statSync ném lỗi nếu tệp không tồn tại

var checkDuplicateFile = function(){ 
    var number = room.number.toString(); 
    var stats = fs.statSync(number); 
    if(stat){ 
     console.log('it exists'); 
    }else{ 
     console.log('it does not exist'); 
    } 

}; 
+0

kiểm tra câu hỏi này, trả lời nó cũng tương tự như: http://stackoverflow.com/questions/4482686/check-synchronously-if-file-directory-exists-in-node-js –

+0

Điều đó không giúp tôi. Nó không trả lời câu hỏi tôi hỏi. – Mike

+0

bạn không thể sử dụng phiên bản chức năng không đồng bộ? https://nodejs.org/api/fs.html#fs_file_system –

Trả lời

25

Ứng dụng của bạn đang rơi vì bạn không gói fs.statSync của bạn trong một khối try/catch. Các chức năng đồng bộ trong nút không trả lại lỗi giống như trong các phiên bản async của chúng. Thay vào đó, họ ném lỗi của họ mà cần phải được đánh bắt.

try { 
    var stats = fs.statSync(number); 
    console.log('it exists'); 
} 
catch(err) { 
    console.log('it does not exist'); 
} 

Nếu ứng dụng của bạn không yêu cầu thao tác này đồng bộ (chặn thực hiện thêm cho đến khi thao tác này kết thúc) thì tôi sẽ sử dụng phiên bản không đồng bộ.

fs.stat(number, function(err, data) { 
    if (err) 
    console.log('it does not exist'); 
    else 
    console.log('it exists'); 
}); 
Các vấn đề liên quan