是否可以使用以斜杠(例如/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无效-我想保持灵活性
答案 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);
});
});