所以在我的nodejs服务器文件中,我有一行:
tools=require("./tools.js");
工具文件包含我更改的功能和类似功能,所以我想每次更改内容时都不会重新启动服务器,我可以简单地为我添加一些方法来重新使用tools.js,所以我做了。但是现在的问题是,当我启动程序时,更改tools.js并使其重新需要它,它再次需要它,就好像它仍然处于首次需要它时的状态。什么?
编辑:我不想在文件更改时重新启动应用程序,因为这与重新启动服务器相同,这是我想要阻止的!所以我需要让我重新要求的东西,忽略模块缓存或其他任何东西。
有什么想法可以帮到我吗?
答案 0 :(得分:12)
如果您不想重新启动应用程序,请在每次需要时执行此操作。
var filename = path.resolve('./tools.js');
delete require.cache[filename];
var tools = require('./tools');
答案 1 :(得分:2)
如果我理解正确,你就会遇到Node的模块缓存。 http://nodejs.org/docs/latest/api/modules.html#modules_caching
如果这是一个选项,您可能希望为Node查找正确的重新加载器。例如,请参阅https://github.com/isaacs/node-supervisor。
答案 2 :(得分:2)
看看主管。 Supervisor可以在文件更改时自动重启应用程序,并且设置简单。
npm install -g supervisor
supervisor app.js
答案 3 :(得分:2)
一旦node.js需要()s一个模块,任何后续调用require()都会从内存中获取它,实际的模块文件不会再次加载。您需要做的是使用nodemon(https://github.com/remy/nodemon)之类的工具,它会在文件更改时自动重启您的应用程序。
答案 4 :(得分:2)
这为我解决了:
let tools = require("./tools.js");
delete require.cache[require.resolve("./tools.js")];
tools = require("./tools.js");
信任此answer