Узел fs использует косую черту для базовой директории приложения - PullRequest
0 голосов
/ 02 июля 2018

Есть ли способ использовать пути, начинающиеся с косой черты (например, /lib), для доступа к каталогам, абсолютно равным базовому каталогу моего экспресс-приложения?

router.get('/lib*', (req, res, next) => {
    var path = req.path;
    console.log(path) // ==> /lib/foo/bar
    fs.readdir(path, (err, names) => {
        if(err)
            next(err);
    });
});

Это мое файловое дерево:

app
├── lib
|    └── some files
├── app.js
└── router.js

При доступе к маршруту /lib модуль fs хочет прочитать каталог D:\lib.

Я бы хотел получить доступ к D:\(...)\app\lib.

Использование __dirname не сработало бы, если бы маршрутизатор находился в другом каталоге - я бы хотел быть гибким

Ответы [ 2 ]

0 голосов
/ 02 июля 2018
var path = require('path');

router.get('/lib*', (req, res, next) => {
        var filepath = req.path;
        console.log(path) // ==> /lib/foo/bar
        fs.readdir(path.resolve(__dirname, filepath), (err, names) => {
            if(err)
                next(err);
        });
    });
0 голосов
/ 02 июля 2018

Вы можете достичь этого, используя __dirname.

Замена

var path = req.path;

от

var filePath = path.join(__dirname, req.path);

должен дать вам полный путь. Вам нужно будет указать path в модуле запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...