节点fs使用斜杠作为应用程序的基本目录

时间:2018-07-02 13:12:03

标签: node.js express path fs absolute-path

是否可以使用以斜杠(例如/lib)开头的路径访问我的Express应用程序基本目录的绝对目录?

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 :(得分:1)

您可以使用__dirname来实现。

替换

var path = req.path;

作者

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

应该给您完整的路径。您需要在请求模块中要求path

答案 1 :(得分:0)

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);
        });
    });