Невозможно использовать переменные в функциях fs при использовании brfs
Я использую browserify, чтобы иметь возможность использовать require. Чтобы использовать функции fs с browserify, мне нужно преобразовать его с помощью brfs, но, насколько я понял, это дает возможность только вводить статические строки в качестве параметров внутри моей функции fs. Я хочу иметь возможность использовать переменные для этого.
Я хочу искать XML-файлы в определенном каталоге и читать их. Либо путем поиска через текстовое поле, либо показывая все свои данные сразу. Для этого мне нужны fs и browserify, чтобы потребовать это.
const FS = require('fs')
function lookForRoom() {
let files = getFileNames()
findSearchedRoom(files)
}
function getFileNames() {
return FS.readdirSync('../data/')
}
function findSearchedRoom(files) {
const SEARCH_FIELD_ID = 'room'
let searchText = document.getElementById(SEARCH_FIELD_ID).value
files.forEach((file) => {
const SEARCHTEXT_FOUND = file.includes(searchText.toLowerCase())
if (SEARCHTEXT_FOUND) loadXML(file)
})
}
function loadXML(file) {
const XML2JS = require('xml2js')
let parser = new XML2JS.Parser()
let data = FS.readFile('../data/' + file)
console.dir(data);
}
module.exports = { lookForRoom: lookForRoom }
Я хочу, чтобы иметь возможность читать содержимое из каталога, содержащего файлы XML. Текущее состояние таково, что я могу сделать это только когда я предоставляю постоянную строку для функции fs
1 ответ
brfs
README содержит эту ошибку:
поскольку
brfs
оценивает ваш исходный код статически, вы не можете использовать динамические выражения, которые нужно оценивать во время выполнения.
Так что, в принципе, вы не можете использовать brfs
так, как вы надеялись.
Я хочу иметь возможность читать содержимое из каталога, содержащего файлы XML
Если под "каталогом" вы подразумеваете "любой случайный каталог, имя которого определяется вводом какой-либо формы", то это не сработает. Браузеры не имеют прямого доступа к содержимому каталога ни локально, ни на сервере.
Вы не говорите, где этот каталог существует. Если он локальный (на компьютере, на котором работает браузер): я не думаю, что для этого вообще есть стандартизированные API.
Если он находится на сервере, вам необходимо реализовать HTTP-сервер, который будет принимать каталог / имя файла из некоторого клиентского кода и таким образом получать содержимое файла.