Невозможно использовать переменные в функциях fs при использовании brfs - PullRequest
0 голосов
/ 02 января 2019

Я использую 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 Ответ

0 голосов
/ 02 января 2019

README brfs содержит следующую информацию:

Так как brfs статически оценивает ваш исходный код, вы не можете использовать динамические выражения, которые необходимо оценивать во время выполнения.

Так что, по сути, вы не можете использовать brfs так, как надеялись.

Я хочу иметь возможность считывать содержимое из каталога, содержащего XML-файлы

Если под «каталогом» вы подразумеваете «любой случайный каталог, имя которого определяется вводом какой-либо формы», то это не сработает.Браузеры не имеют прямого доступа к содержимому каталога ни локально, ни на сервере.

Вы не говорите, где этот каталог существует.Если он локальный (на компьютере, на котором работает браузер): я не думаю, что для этого вообще есть стандартизированные API.

Если он находится на сервере, то вам нужно реализовать HTTP-серверон будет принимать каталог / имя файла из некоторого клиентского кода и таким образом получать содержимое файла.

...