如何通过Express发送静态资产时,在开发过程中自动刷新浏览器?

时间:2018-05-14 20:32:56

标签: javascript node.js express

当我更改客户端文件时,如何自动刷新浏览器?我正在使用ReactJS构建客户端。当我向" /"发出GET请求时,我告诉我的Express服务器发送位于我公共目录中的静态资产。

以下是我的服务器的外观:

const express = require('express');
const path = require('path');
const logger = require('morgan');
const bodyParser = require('body-parser');

const app = express();
const port = process.env.PORT || 1128;

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// static assets
app.use(express.static(path.resolve(__dirname, './../public')));

app.listen(port, () =>
  console.log(`server is listening on port: ${port}`)
);

进行更改后,webpack会捆绑所有内容并将所有内容输出到公共目录中。有没有办法让服务器在这里监视更改,以便浏览器可以自动刷新?如果有人知道如何或知道更好的方式,我会非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用websocket通知客户端文件更改。您可以使用fs.watch()

检测文件更改

观看档案系统:https://nodejs.org/api/fs.html#fs_event_change

网络套接字:https://socket.io/(或您选择的图书馆)

socket.on('file_changed', function () {
  location.reload();
});