Невозможно использовать переменные в функциях 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-сервер, который будет принимать каталог / имя файла из некоторого клиентского кода и таким образом получать содержимое файла.

Другие вопросы по тегам