nodejs清除require缓存 delete require.cache
程序员文章站
2022-03-08 14:07:51
...
开发nodejs应用时会面临一个麻烦的事情,就是修改了配置数据之后,必须重启服务器才能看到修改后的结果。
于是问题来了,挖掘机哪家强?噢,no! no! no!
怎么做到修改文件之后,自动重启服务器。
server.js中的片段:
var port = process.env.port || 1337; app.listen(port); console.log("server start in " + port); exports.app = app;
假定我们现在是这样的:
app.js的片段:
var app = require('./server.js');
如果我们在server.js中启动了服务器,我们停止服务器可以在app.js中调用
app.app.close()
但是当我们重新引入server.js
app = require('./server.js')
的时候会发现并不是用的最新的server.js文件,原因是require的缓存机制,在第一次调用require('./server.js')的时候缓存下来了。
这个时候怎么办?
下面的代码解决了这个问题:
delete require.cache[require.resolve('./server.js')]; app = require('./server.js');
这个require.resolve 相当于把相对路径转化成绝对路径,避免了自己手写的绝对路径跟cache里的key不一致的问题