我正在读取文件,并使用fs.watch实时查找文件中的更改,该文件运行正常。现在,我想在每次文件更改时都调用app.get。但是我的函数“ func_read_file_lines”仍然将旧文件发送回去。我找不到问题。
const express = require('express')
const app = express()
app.set('view engine', 'ejs');
var fs = require('fs');
const request = require('request');
require('log-timestamp');
path = require("path");
var filename = path.resolve('test.txt');
const buttonPressesLogFile = filename;
fs.watch(buttonPressesLogFile, (event, filename) => {
if (filename && event === 'change') {
console.log(`${filename} file Changed`);
func_read_file_lines.
then((data) => {
let last_n_lines = data.split('\n').slice(-10, -1);
console.log(last_n_lines)
}).catch((err) => {
console.log(err)
})
}
});
let func_read_file_lines = new Promise((resolve, reject) => {
fs.readFile(filename, 'utf8', function read(err, data) {
if (err) {
console.log(err);
reject(err);
} else {
resolve(data)
}
});
})
app.get('/', (req, res) => {
func_read_file_lines.
then((data) => {
let last_n_lines = data.split('\n').slice(-10, -1);
res.render('display', {
last_n_lines: last_n_lines
});
}).catch((err) => {
console.log(err)
})
})
const port = 3000
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
这是因为您只创建func_read_file_lines
一次。尝试创建一个函数来返回promise,如下所示:
const express = require('express')
const app = express()
app.set('view engine', 'ejs');
var fs = require('fs');
const request = require('request');
require('log-timestamp');
path = require("path");
var filename = path.resolve('test.txt');
const buttonPressesLogFile = filename;
fs.watch(buttonPressesLogFile, (event, filename) => {
if (filename && event === 'change') {
console.log(`${filename} file Changed`);
func_read_file_lines.
then((data) => {
let last_n_lines = data.split('\n').slice(-10, -1);
console.log(last_n_lines)
}).catch((err) => {
console.log(err)
})
}
});
// CHANGE THE LINE BELOW
let func_read_file_lines = () => new Promise((resolve, reject) => {
fs.readFile(filename, 'utf8', function read(err, data) {
if (err) {
console.log(err);
reject(err);
} else {
resolve(data)
}
});
})
app.get('/', (req, res) => {
func_read_file_lines(). // CHANGED THIS LINE
then((data) => {
let last_n_lines = data.split('\n').slice(-10, -1);
res.render('display', {
last_n_lines: last_n_lines
});
}).catch((err) => {
console.log(err)
})
})
const port = 3000
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句