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的值,我们会发现输出会跟着变化,实现热更新。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容