Node js Lấy đường dẫn thư mục từ một tệp


90

Có cách nào để lấy đường dẫn đến một thư mục chứa một tệp cụ thể.

fs.realpathSync('config.json', []);

trả lại một cái gì đó như

G:\node-demos\7-node-module\demo\config.json

tôi chỉ cần

G:\node-demos\7-node-module\demo\ 
or
G:\node-demos\7-node-module\demo\

Có bất kỳ api nào cho điều này hay tôi sẽ cần xử lý chuỗi?

Câu trả lời:


164

sử dụng path.dirname

// onlyPath should be G:\node-demos\7-handlebars-watch\demo
var onlyPath = require('path').dirname('G:\\node-demos\\7-node-module\\demo\\config.json');

1
Nhân đôi dấu gạch chéo ngược của bạn, nếu không bạn sẽ thoát các ký tự ngẫu nhiên.
Константин Ван

1
nếu bạn đang bắt đầu với một con đường tương đối như trong câu hỏi ban đầu, bạn sẽ làm-let onlyPath = path.dirname(fs.realpathSync('config.json'));
Kip

Tôi muốn luôn sử dụng phương pháp @Kip sử dụng realpathSyncbao gồm các đường dẫn tuyệt đối và tương đối
joshweir Ngày

5

require("path").dirname(……) ngắt khi đường dẫn của bạn không chỉ định rõ ràng thư mục của nó.

require("path").dirname("./..")
// "."

Bạn có thể cân nhắc sử dụng require("path").join(……, "../")thay thế. Nó cũng bảo tồn dấu phân cách theo sau.

require("path").join("whatever/absolute/or/relative", "../")
// "whatever/absolute/or/" (POSIX)
// "whatever\\absolute\\or\\" (Windows)
require("path").join(".", "../")
// "../" (POSIX)
// "..\\" (Windows)
require("path").join("..", "../")
// "../../" (POSIX)
// "..\\..\\" (Windows)
require("path").win32.join("C:\\", "../")
// "C:\\"

5

Chỉ cần cài đặt pathmô-đun và sử dụng nó,

var path = require('path');
path.dirname('G:\\node-demos\\7-node-module\\demo\\config.json')

// Returns: 'G:\node-demos\7-node-module\demo'

điều này có vẻ giống với câu trả lời được chấp nhận đã đăng 5 năm trước
KyleMit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.