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

时间:2019-01-01 21:44:08

标签: node.js requirejs browserify brfs

我使用browserify以便能够使用require。为了在浏览器中使用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函数提供常量字符串时,我才能这样做

1 个答案:

答案 0 :(得分:2)

brfs自述文件包含以下陷阱:

  

由于brfs会静态评估源代码,因此无法使用需要在运行时进行评估的动态表达式。

因此,基本上,您无法按照希望的方式使用brfs

  

我希望能够从包含xml文件的目录中读取内容

如果用“目录”来表示“任何随机目录,其名称由某种形式的输入确定”,则该目录将不起作用。浏览器不能直接访问本地或服务器上的目录内容。

您不是在说该目录的位置。如果它是本地的(在运行浏览器的计算机上):我认为根本没有标准化的API。

如果它在服务器上,那么您需要实现一个HTTP服务器,该服务器将从某些客户端代码中接受目录/文件名,并以这种方式检索文件内容。