Node.js - 选择随机文件并读取其内容然后拆分它

Node.js - selecting random file and reading its content then spliting it

所以,我想 select 随机文件,读取它的内容,拆分它并对其进行字符串化。
但问题是文件总是一样的。 (我刷新了10次页面)
代码:

//require
var fs = require('fs');
var http = require('http')
//require
var files = fs.readdirSync('./pathtofiles');

function randomfile(list){
    return list[Math.floor(Math.random() * files.length)];
}

var location = './zdj' + '/' + (randomfile(files))

var data = fs.readFileSync(location, "utf8");
var splittext = data.split("||")

var app = http.createServer(function(req,res){
    res.setHeader('Content-Type', 'application/json');
    res.end(JSON.stringify({"test1": splittext[0], "test2": splittext[1], "test3": splittext[2]}));
});
app.listen(3000);

文件内容示例:||示例||文件

“随机”文件是在服务器启动前确定的。为了对每个请求执行此操作,您需要在 request-callback:

中调用 randomfile(...)
const app = http.createServer( (req,res) => {
    const location = './zdj' + '/' + (randomfile(files))
    const data = fs.readFileSync(location, "utf8");
    const splittext = data.split("||")
    res.setHeader('Content-Type', 'application/json');
    res.end(JSON.stringify({"test1": splittext[0], "test2": splittext[1], "test3": splittext[2]}));
});

注:

1.) 现在你应该使用 let/const 而不是 var(更多信息请参见 this

2.) readFileSync 块,你应该考虑使用 non-blocking read-operation,例如fs.promises.readFile()