NodeJS的Require如何实现热更新?

首先我们准备一个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.jsa的值,我们会发现输出会跟着变化,实现热更新。

你可能感兴趣的:(NodeJS的Require如何实现热更新?)