即使对节点js进行了更改,Node js也会在控制台中显示旧文件

德鲁夫·努尼亚

我正在读取文件,并使用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}!`))
科迪G

这是因为您只创建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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在控制台中找不到JS文件

来自分类Dev

Morgan Logger + Express.js:编写文件并在控制台中显示

来自分类Dev

在骨干js的控制台中显示一条消息

来自分类Dev

卡在加载上对App.js进行了微小更改

来自分类Dev

卡在加载上对App.js进行了微小更改

来自分类Dev

找出谁对Powershell对文件进行了最后更改?

来自分类Dev

Backbone.js视图将不会在页面加载时显示,但可以在控制台中与jQuery一起使用

来自分类Dev

在js控制台中访问jquery对象

来自分类Dev

js控制台中的`Object`与`extend`

来自分类Dev

对cakephp视图文件进行了更改,但更改未在浏览器中显示

来自分类Dev

如何访问在 node.js 控制台中的 javascript 文件中声明的变量?

来自分类Dev

自定义我的对象在JS控制台中的显示方式

来自分类Dev

如何在控制台中显示详细的 JSON-API JS 调试信息?

来自分类Dev

git:显示哪些文件在内核3.18.6和3.18.7之间进行了更改

来自分类Dev

jQuery在控制台中有效,但在链接的js文件中无效

来自分类Dev

jQuery在控制台中工作,但不在Rails 4 application.js文件中

来自分类Dev

在Komodo控制台中运行Node.js脚本

来自分类Dev

如何在Node.js控制台中隐藏密码?

来自分类Dev

控制台中的Node.js调试消息,很奇怪

来自分类Dev

使用apt-get节点安装的Ubuntu 14 Node.js无法在控制台中运行

来自分类Dev

使用apt-get节点安装的Ubuntu 14 Node.js无法在控制台中运行

来自分类Dev

Atlassian Bamboo:如果对特定文件进行了更改,请不要触发构建

来自分类Dev

boto3版本,如果对文件进行了更改,则附加

来自分类Dev

API数据显示在浏览器的控制台中,而不显示在网页上-Vue.js

来自分类Dev

我的Node.JS应用程序是否已使用新版本的Handlebars错误对获取模板进行了预编译?

来自分类Dev

three.js GLTFLoader未在React中显示模型并在控制台中提供了无限%的加载

来自分类Dev

Angular JS:Android Studio控制台中显示意外的令牌错误,但在浏览器中工作正常

来自分类Dev

如何从控制台中删除pixi.js横幅?

来自分类Dev

如何在JS的控制台中输入ASCII艺术图像?

Related 相关文章

  1. 1

    在控制台中找不到JS文件

  2. 2

    Morgan Logger + Express.js:编写文件并在控制台中显示

  3. 3

    在骨干js的控制台中显示一条消息

  4. 4

    卡在加载上对App.js进行了微小更改

  5. 5

    卡在加载上对App.js进行了微小更改

  6. 6

    找出谁对Powershell对文件进行了最后更改?

  7. 7

    Backbone.js视图将不会在页面加载时显示,但可以在控制台中与jQuery一起使用

  8. 8

    在js控制台中访问jquery对象

  9. 9

    js控制台中的`Object`与`extend`

  10. 10

    对cakephp视图文件进行了更改,但更改未在浏览器中显示

  11. 11

    如何访问在 node.js 控制台中的 javascript 文件中声明的变量?

  12. 12

    自定义我的对象在JS控制台中的显示方式

  13. 13

    如何在控制台中显示详细的 JSON-API JS 调试信息?

  14. 14

    git:显示哪些文件在内核3.18.6和3.18.7之间进行了更改

  15. 15

    jQuery在控制台中有效,但在链接的js文件中无效

  16. 16

    jQuery在控制台中工作,但不在Rails 4 application.js文件中

  17. 17

    在Komodo控制台中运行Node.js脚本

  18. 18

    如何在Node.js控制台中隐藏密码?

  19. 19

    控制台中的Node.js调试消息,很奇怪

  20. 20

    使用apt-get节点安装的Ubuntu 14 Node.js无法在控制台中运行

  21. 21

    使用apt-get节点安装的Ubuntu 14 Node.js无法在控制台中运行

  22. 22

    Atlassian Bamboo:如果对特定文件进行了更改,请不要触发构建

  23. 23

    boto3版本,如果对文件进行了更改,则附加

  24. 24

    API数据显示在浏览器的控制台中,而不显示在网页上-Vue.js

  25. 25

    我的Node.JS应用程序是否已使用新版本的Handlebars错误对获取模板进行了预编译?

  26. 26

    three.js GLTFLoader未在React中显示模型并在控制台中提供了无限%的加载

  27. 27

    Angular JS:Android Studio控制台中显示意外的令牌错误,但在浏览器中工作正常

  28. 28

    如何从控制台中删除pixi.js横幅?

  29. 29

    如何在JS的控制台中输入ASCII艺术图像?

热门标签

归档