standard-things / esm

Tomorrow's ECMAScript modules today!
Other
5.26k stars 147 forks source link

fs.watch load file has cache #916

Open mannymu opened 2 years ago

mannymu commented 2 years ago

`const fs = require('fs'); const path = require('path');

require('@babel/register')({ cache: false, });

process.env.ESM_DISABLE_CACHE = true

const requireModule = require('esm')(module, { cache: false, cjs: { cache: false }, force: true } );

const getESM = (path)=>{ let esmModule = {}; try { esmModule = requireModule(path); } catch (e) { console.trace('requireModule Error:', e); } //本地开发时,fs.watch重新打包时有问题 return esmModule.default || esmModule; }

const baseDir = path.resolve(__dirname,"./src");

function build(){ let result = getESM(path.resolve(baseDir, './config.js')); console.log(result); }

build(); fs.watch(baseDir,{ persistent: true, recursive: true },(, filename)=>{ console.log(,filename); build() }); ` When I change the config.js file, the result is still cached before.

node : v16.13.1 npm: 8.1.2

mannymu commented 2 years ago

image

I have solved it