2013-08-06 30 views
34

cấu trúc ứng dụng của tôi là:Làm thế nào để đi lên bằng __dirname trong phân cấp thư mục

/app 
    /css 
    /js 
    .. 
/script 
    /server.js 

Tôi đang cố gắng sử dụng __dirname để trỏ đến thư mục/ứng dụng khi sử dụng

app.use(express.static(__dirname + '/app')); 

Tôi không thực sự biết những gì cần tìm kiếm trên web, vui lòng trợ giúp.

+1

Tại sao bạn lại bỏ phiếu? Tôi nghĩ câu hỏi này là hợp pháp. –

Trả lời

32

nếu bạn đang ở server.js sau đó bạn có nghĩa là

app.use(express.static(__dirname + '/../app')); 
+3

Tôi đang trong tệp express.js và '/../' không dịch, nó hiển thị 'current_directory_path /../ app' điều này là kết quả và không thể tìm thấy tệp ... bất kỳ ý tưởng nào tại sao? – Babar

+0

bạn đang sử dụng hệ điều hành nào? –

+0

Tôi đang sử dụng Ubuntu, cú pháp tương tự đang hoạt động ở những nơi khác nhưng nó không hoạt động bên trong tệp express.js. – Babar

0

__dirname chỉ là một chuỗi, bạn có thể làm chuỗi thao tác trên đó.

app.use(express.static(__dirname.substring(0, __dirname.indexOf("\\routes") + '\app')); 

Tôi sẽ thật mà nói, tôi đã sử dụng nó cho một mục đích khác nhau:

res.sendFile('./uploads/' + req.params.id + '/' + req.params.filename, {"root": __dirname.substring(0, __dirname.indexOf("\\routes"))}); 

Vì vậy, bạn có thể phải làm việc với các/vs \ một chút.

12

Bạn có thể sử dụng mô-đun path cho điều đó.

Mô-đun đường dẫn cung cấp các tiện ích để làm việc với đường dẫn tệp và thư mục.

const path = require('path'); 

app.use(express.static(path.join(__dirname, '..', 'app'))); 
+0

Vui lòng thêm giải thích ngắn cho câu trả lời của bạn. –

0

tôi đã làm một giải pháp đơn giản, nhưng nó hoạt động. trong máy chủ script khởi động của bạn js bạn có thể thêm như sau:

var publicFolder = __dirname + '/public/'; 
config.public_folder = publicFolder; 

Sau đó, bất cứ khi nào bạn cần truy cập vào thư mục này nơi khác trong các mã trong các thư mục phụ hoặc các tuyến đường, bạn cần phải tiêm biến Public Folder. và sử dụng nó như thế này:

res.sendFile(config.public_folder+'unsubscribed-success.html'); 
Các vấn đề liên quan