首先我们准备一个mod.js
的模块文件。
var a = 1;
exports.a = a;
再准备一个测试文件test.js
。
const fs = require('fs');
const path = require('path');
// 单位:毫秒
function sleep(delay) {
return new Promise(resolve => setTimeout(resolve, delay))
}
(async () => {
let mod = require('./mod.js');
fs.watch(require.resolve('./mod.js'), function () {
console.log('文件有更新了.')
let modPath = path.resolve('./mod.js');
delete require.cache[modPath];
mod = require('./mod.js');
});
console.log(mod.a, 'Start sleep');
await sleep(12*1000);
console.log('sleep over', mod.a);
})()
运行程序后,我们修改mod.js
中a
的值,我们会发现输出会跟着变化,实现热更新。