Node.js 防止RequireJS在NodeJ上缓存所需脚本

Node.js 防止RequireJS在NodeJ上缓存所需脚本,node.js,caching,requirejs,Node.js,Caching,Requirejs,我正在使用类似的东西,例如,在服务器上使用与我在客户端上使用的相同的主干模型、视图、集合和模板构建完整的HTML。我的文件/模块被定义为requirejs模块,这样我就可以在客户端轻松地共享它们。 在开发模式下,我希望requirejs在刷新浏览器时(无需重新启动服务器)重新读取/重新加载光盘中的任何模块,这样我就可以使用最新的模板和javascript最终为我提供最新的HTML 当在带有NodeJ的服务器上使用requirejs时,如下情况不起作用,即服务器不会从光盘重新加载/重新蚀刻任何模块

我正在使用类似的东西,例如,在服务器上使用与我在客户端上使用的相同的主干模型、视图、集合和模板构建完整的HTML。我的文件/模块被定义为requirejs模块,这样我就可以在客户端轻松地共享它们。 在开发模式下,我希望requirejs在刷新浏览器时(无需重新启动服务器)重新读取/重新加载光盘中的任何模块,这样我就可以使用最新的模板和javascript最终为我提供最新的HTML

当在带有NodeJ的服务器上使用requirejs时,如下情况不起作用,即服务器不会从光盘重新加载/重新蚀刻任何模块

urlArgs: "bust=v2" 

我想知道,在node中是否可以在不重新启动服务器的情况下从磁盘空间重新加载/重新蚀刻requirejs模块?具体来说,这对于模板非常有用。此外,最好只对一组受限的模块应用重新加载。

我从来没有这样做过,但快速搜索显示,包括自动重新启动服务器:

你也可以做一些类似的创造性的事情:

  • delete require.cache['/home/shimin/test2.js']
您几乎可以肯定地清除RequireJS缓存中的版本,强制它重新加载它,尽管我怀疑节点会再次提供旧文件


最后,我们来看看热重新加载,它似乎可以绕过缓存而不需要重新启动服务器()。

像OP一样,我正在寻找一种方法,使使用RequireJS的节点开发更容易、更快。在我的例子中,我在节点中将RequireJS与grunt
watch
任务一起使用,并希望能够强制RequireJS始终从文件系统获取最新版本的模块。幸运的是,我找到了一个非常好的选择

我不得不通过添加超时来稍微修改Henning Kvinnesland的建议,但现在它工作起来很有魅力:

var requirejs=require('requirejs');
//在此处设置requirejs.config。。。
//禁用模块的缓存
requirejs.onResourceLoad=函数(上下文,映射){
setTimeout(函数(){
requirejs.undf(map.name);
}, 1);
};

你又来了!:P它究竟是如何不起作用的?另外,我发现
urlArgs:“bust=“+(new Date())。getTime()
在开发时更好。还有,为什么不使用node的
require
系统呢?嗨,c24w:-)我更新了我的答案。我希望现在更清楚,谢谢你的提示
delete require.cache[]
在webpack watch或webpack dev server期间,我需要始终从一些POSTSSS所需文件中获取新内容。