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



有没有办法使用以斜杠开头的路径(例如/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:(...)applib

如果路由器在另一个目录中,使用 __dirname 将不起作用 - 我想灵活一点

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

您可以使用__dirname来实现这一点。

取代

var path = req.path;

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

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

相关内容

  • 没有找到相关文章

最新更新