Hầu hết mọi chức năng (trừ require
) có đường dẫn tệp làm đối số, sẽ sử dụng một hàm từ mô-đun fs
để đọc hoặc viết cho chúng.
Node.js documentation for fs module nói:
đường So với tên tập tin có thể được sử dụng, tuy nhiên hãy nhớ rằng con đường này sẽ liên quan đến process.cwd().
Khi bạn nghĩ về điều đó, điều này sẽ yêu cầu phải có những thủ thuật chính để các chức năng này hoạt động khác. Sau khi tất cả, các chức năng fs là Javascript thường xuyên và họ không có quyền truy cập đặc biệt vào thông tin về người gọi. Chỉ __dirname
họ có thể truy cập sẽ là __dirname
của mô-đun riêng của họ (mô-đun lõi fs).
Thực tế là require
chức năng thể quyết tâm đường dẫn tương đối so với hiện tại __dirname
, mà không chỉ định này một cách rõ ràng, là bởi vì require
là một chức năng duy nhất cho mỗi tập tin duy nhất xuất hiện trong. Bằng cách này, nó có quyền truy cập vào các hiện các chi tiết cụ thể của mô-đun và đặc biệt là đường dẫn của mô-đun.
Lý do mã của bạn hoạt động là hiện tại, mã số app.js
(hoặc tương tự) ở trên xuất hiện trong cùng một thư mục với tên process.cwd()
hiện tại. I E. bắt đầu ứng dụng với node app.js
sẽ hoạt động, trong khi khởi động ứng dụng với node myappdir/app.js
(chạy từ thư mục chính) sẽ không hoạt động. process.cwd()
sẽ khác.
Miễn là bạn ghi nhớ rằng đường dẫn tương đối sẽ được giải quyết qua process.cwd()
, thì bạn có thể sử dụng cú pháp ngắn hơn. Trong một số trường hợp, nó có thể là một lợi thế. Nó làm cho mã của bạn phụ thuộc vào cách nó được gọi là mặc dù. Cá nhân tôi thích sử dụng __dirname
, vì nó hơi minh bạch hơn về những gì đang xảy ra và các đường dẫn tương đối phù hợp với đường dẫn bạn sử dụng trong tuyên bố require
cho cùng một tệp.
Nguồn
2013-05-24 08:06:35
Tôi tin rằng cách xác định vị trí cuối cùng sẽ phá vỡ trên Windows. Tôi là 90% sử dụng '__dirname + '/ folder'' là cách tiếp cận an toàn nhất (không có bằng chứng cụ thể, chỉ là trải nghiệm ngẫu nhiên rối tung xung quanh với nút trong Windows). –