Dakson
Dakson

Reputation: 75

Unable to use variables in fs functions when using brfs

I use browserify in order to be able to use require. To use fs functions with browserify i need to transform it with brfs but as far as I understood this results in only being able to input static strings as parameters inside my fs function. I want to be able to use variables for this.

I want to search for xml files in a specific directory and read them. Either by searching via text field or showing all of their data at once. In order to do this I need fs and browserify in order to require it.

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 }

I want to be able to read contents out of a directory containing xml files. Current status is that I can only do so when I provide a constant string to the fs function

Upvotes: 0

Views: 43

Answers (1)

robertklep
robertklep

Reputation: 203494

The brfs README contains this gotcha:

Since brfs evaluates your source code statically, you can't use dynamic expressions that need to be evaluated at run time.

So, basically, you can't use brfs in the way you were hoping.

I want to be able to read contents out of a directory containing xml files

If by "a directory" you mean "any random directory, the name of which is determined by some form input", then that's not going to work. Browsers don't have direct access to directory contents, either locally or on a server.

You're not saying where that directory exists. If it's local (on the machine the browser is running on): I don't think there are standardized API's to do that, at all.

If it's on the server, then you need to implement an HTTP server that will accept a directory-/filename from some clientside code, and retrieve the file contents that way.

Upvotes: 2

Related Questions