Nodejs需要在文件更改后第二次返回相同的旧文件

Win*_*ade 5 javascript require node.js

所以在我的nodejs服务器文件中我有一行:

tools=require("./tools.js");
Run Code Online (Sandbox Code Playgroud)

工具文件包含我改变的功能和类似的东西,所以我想的不是每次我改变一些东西时重新启动服务器,我可以简单地为我添加一些方法来重新使用tools.js,所以我做了.但是现在的问题是,当我启动程序时,更改tools.js并使其重新需要它,它再次需要它,就好像它仍然处于首次需要它时的状态.什么?

编辑:我不想在文件更改时重新启动应用程序,因为这与重新启动服务器相同,这是我想要阻止的!所以我需要一些东西,让我重新要求它,忽略模块缓存或其他什么.

有什么想法可以帮助我吗?

Tee*_*nen 12

如果您不想重新启动应用程序,请在每次需要时执行此操作.

var filename = path.resolve('./tools.js');
delete require.cache[filename];
var tools = require('./tools');
Run Code Online (Sandbox Code Playgroud)


mil*_*mal 6

这为我解决了这个问题:

let tools = require("./tools.js"); 
delete require.cache[require.resolve("./tools.js")];
tools = require("./tools.js");
Run Code Online (Sandbox Code Playgroud)

相信这个答案


AKX*_*AKX 2

如果我理解正确的话,那么您正在遇到 Node 的模块缓存。http://nodejs.org/docs/latest/api/modules.html#modules_caching

如果可以的话,您可能想寻找一个适合 Node 的重新加载器。例如,请参阅https://github.com/isaacs/node-supervisor 。