Поскольку мне нужно было запускать свое приложение в обычном браузере, я не мог использовать что-то вроде Electron JS. Вместо этого я создал серверную часть в Node JS и отправил запрос на серверную часть узла для всех файлов в заранее определенном каталоге. Затем я использовал fs.readdir
, чтобы вернуть все файлы и каталоги в файле, и отобразил их в моем интерфейсном приложении React, после чего я позволил пользователю выбрать файл или каталог. Если был выбран файл, то у меня был мой путь к файлу, поскольку я уже знал, что это за текущий каталог. Если был выбран каталог, к тому же API был отправлен другой запрос на получение файлов и каталога нового каталога.
app.get('/api/fileFinder', async (req, res) => {
const mainDir = req.query.name || '/efs/data';
console.log(mainDir);
fs.readdir(mainDir, function(err, items) {
const dirs = [];
const files = [];
if (items){
for (var i=0; i<items.length; i++) {
if (fs.lstatSync(mainDir + '/' + items[i]).isDirectory()){
dirs.push(items[i]);
}
else{files.push(items[i])}
}
}
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({
files: files,
dirs: dirs
}));
});
Чтобы запустить и ReactJS, и NodeJS на одном и том же порте, я построил ReactJS и добавил его на сервер NodeJS поместив файл сборки в ту же папку, что и файл NodeJS, и добавив app.use(express.static(__dirname + '/build'));
к NodeJS.
Надеюсь, это поможет всем, кто сталкивается с аналогичной проблемой.