460260
有下面3个js文件,执行c.js; a.js :
var b=require('./b.js').b;
exports.a='a from a.js';
exports.b=b;
b.js :
var a=require('./a.js').a;
exports.b='b from b.js';
exports.a=a;
c.js :
var a=require('./a.js');
console.log(a); //{ a: 'a from a.js', b: 'b from b.js' }
var b=require('./b.js');
console.log(b); //{ b: 'b from b.js', a: undefined }
why is a undefined in b.js?
在b.js第一次执行var a=require('./a.js').a; 这个a其实是个{};a.js代码还没执行完。
此时b.js已经被缓存了,如何让b.a得到正确的值?
可以这么做:
delete require.cache[require.resolve('./b.js')]
b=require('./b.js')
欢迎大家一起讨论,批评指正。
参考:https://stackoverflow.com/questions/9210542/node-js-require-cache-possible-to-invalidate