Lý do tôi hỏi, là vì Node.js trên ubuntu dường như không có hàm fs.exists(). Mặc dù tôi có thể gọi điều này khi tôi chạy Node.js trên máy Mac của mình, khi tôi triển khai đến máy chủ, nó không thành công với một lỗi nói rằng hàm này không tồn tại.Làm cách nào để kiểm tra xem tệp hoặc thư mục có tồn tại mà không sử dụng fs.exists không?
Bây giờ, tôi biết rằng một số người coi đó là "chống mẫu" để kiểm tra xem tệp có tồn tại không và sau đó thử và chỉnh sửa/mở tệp, v.v. cần phải kiểm tra xem chúng có tồn tại trước khi viết cho chúng hay không.
Vậy làm cách nào để kiểm tra xem thư mục (hoặc tệp) có tồn tại không?
EDIT:
Đây là mã tôi chạy trong một tập tin gọi là 'tạm thời của.':
var fs=require('fs');
fs.exists('./temp.js',function(exists){
if(exists){
console.log('yes');
}else{
console.log("no");
}
});
Trên Mac của tôi, nó hoạt động tốt. Trên ubuntu tôi nhận được lỗi:
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)
trên máy Mac của tôi - phiên bản: v0.13.0-pre trên Ubuntu - phiên bản: v0.6.12
Câu hỏi của bạn là sai, nó phải đi "Tại sao fs.exists() mất tích?". Bạn có thể vui lòng thêm các phiên bản NodeJs bạn có trên PC và máy Mac của mình không? lỗi gì bạn nhận được? Một cái gì đó như "tồn tại không phải là một chức năng"? Các phương thức FS điển hình khác có thiếu đối tượng 'fs' đó không? Làm thế nào để bạn yêu cầu 'fs'? –
Tôi đang chạy Ubuntu và mã của bạn hoạt động tốt cho tôi. Vì vậy, đó là một vấn đề trên máy cụ thể của bạn. Bạn đã cài đặt nút như thế nào? Bạn đang chạy phiên bản Node và Ubuntu nào? –
Có thể là do NodeJs 0.6 phương thức 'exist()' được đặt trong mô-đun 'đường dẫn': http://web.archive.org/web/20111230180637/http://nodejs.org/api /path.html –