有没有办法取消 node.js 对 require 模块的缓存

2025-04-26 07:13:59
推荐回答(2个)
回答1:

function (req, res) {
try {
var title = req.param('title'),
viewTemplate = 'path/to/template',
config = require('path/to/config') || {};

res.render(viewTemplate, config);
} catch (e) {
// handleErr('400', res);
}
};
它的功能是响应 ‘/:title’ URL, 用 ‘path/to/config’ 中的配置数据去渲染 ‘path/to/template’ 里的模板文件,返回页面。

调试的时候遇到一个有点麻烦的地方,就是修改了配置数据之后,必须重启服务器才能看到修改后的结果。

也就是 config = require('path/to/config') || {} 这个值因为 require 的时候模块缓存的存在,刷新页面的时候并不会动态去重新加载一次 ‘path/to/config.js’ 文件,导致这个文件的修改只能通过重启才能体现。

有没有方法可以取消 require 的时候的缓存呢?对我来说,如果可以在开发的时候取消这个,开发起来就方便很多了。

顺便,stackoverflow 上面貌似说不可能(http://stackoverflow.com/questions/9210542/node-js-require-cache-possible-to-invalidate)。期盼大牛现身辟谣。

回答2:

可以尝试用javascript的delete语言特性试试,一般来说不需要释放对require模块的缓存,你的要求比较特别。