gpt4 book ai didi

javascript - "Reloading"Node.JS 中的一个文件

转载 作者:行者123 更新时间:2023-12-01 02:23:58 26 4
gpt4 key购买 nike

在 Node.JS 中,我正在尝试“重新加载”文件。我有以下代码:

  delete require.cache[require.resolve("./pathToFile/" + restartModule)]

restartModule是文件名,但我不确定如何使用 require() 将文件添加回来并将其定义为变量 restartModule 。例如,如果 restartModulemyModule ,我该如何添加 myModule.js进入名为 myModule 的 var ?或者也许有一种更简单的方法来简单地“重新加载”缓存中的文件?

最佳答案

你可以做一些足够简单的事情,如下所示:

function reloadModule(moduleName){
delete require.cache[require.resolve(moduleName)]
console.log('reloadModule: Reloading ' + moduleName + "...");
return require(moduleName)
}

var restartModule= reloadModule('./restartModule.js');

每次您想要重新加载源代码时,您都必须调用 reloadModule。您可以通过包装来简化:

var getRestartModule = function() {
return reloadModule('./restartModule.js');
}

getRestartModule().doStuff();

或者

var reloadModules = function() {
return {
restartModule = reloadModule('./restartModule.js');
};
}

var modules = reloadModules();
modules.restartModule.doStuff();

或者:

var reloadModules = function(moduleList) {
var result = {};
moduleList.forEach((module) => {
result[module.name] = reloadModule(module.path);
});
}
var modules = reloadModules([{name: 'restartModule', path: './restartModule.js'}]);

modules.restartModule.doStuff();

您甚至可以将模块重新加载放在 setInterval 上,这样模块就会每 N 秒加载一次。

然后总是有nodemon:https://nodemon.io/这在开发中很有用,每当源文件发生更改时,它都会重新加载您的服务器。你只需像 Node 一样使用它,例如

nodemon server.js

关于javascript - "Reloading"Node.JS 中的一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48964648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com