使用 brfs 时无法在 fs 函数中使用变量

Unable to use variables in fs functions when using brfs

我使用 browserify 以便能够使用 require。要在 browserify 中使用 fs 函数,我需要用 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 函数时才能这样做

brfs 自述文件包含这个陷阱:

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

所以,基本上,您不能按照您希望的方式使用 brfs

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

如果 "a directory" 的意思是 "any random directory, the name of which is determined by some form input",那是行不通的。浏览器无法直接访问本地或服务器上的目录内容。

你不是说该目录存在于何处。如果它是本地的(在机器上,浏览器是 运行):我认为根本没有标准化的 API 来做到这一点。

如果它在服务器上,那么您需要实现一个 HTTP 服务器,它将接受来自某些客户端代码的 directory-/filename,并以这种方式检索文件内容。