Javascript Decache Node.JS,“文件”;“不需要”;问题

Javascript Decache Node.JS,“文件”;“不需要”;问题,javascript,node.js,caching,module,Javascript,Node.js,Caching,Module,我正在尝试创建一个脚本,该脚本能够通过模块解缓存删除模块 经过大量研究,我发现这是可能的,每个人都将其描述为使用不同于正常的require语法 不幸的是,我尝试了所有不同的方法,但似乎没有任何方法能够解除模块 这是代码 \\server.js var plugins = require(__dirname + '\\plugins\\catelog.js'); console.log('server started'); plugins.magic();

我正在尝试创建一个脚本,该脚本能够通过模块解缓存删除模块

经过大量研究,我发现这是可能的,每个人都将其描述为使用不同于正常的require语法

不幸的是,我尝试了所有不同的方法,但似乎没有任何方法能够解除模块

这是代码

    \\server.js
    var plugins = require(__dirname + '\\plugins\\catelog.js');

    console.log('server started');
    plugins.magic();
    plugins.decache('./log/log.js');
    plugins.magic();
下面是我的项目需要的所有需求的清单

   \\plugins\catelog.js
     var nfo = {
      fname: __dirname + '//catelog.js',
      cname: 'Catelog',
      wd: __dirname,
      purpose: 'list of sources for require statement.',
      exuse: "require(wd + '\\httpd.js');"
    };
    console.log(nfo.cname + ' Plugin Mounted Sucsesfully');

    //indecahable entities.
    //essential packages.
    var decache = require('decache');


    //decachable entities.
    //your custom code
    var httpd = require('./httpd/httpd.js');
    var logd = require('./log/log.js');





    module.exports = {
      catelog: nfo,
      httpd: httpd,
      log: logd,
      magic: logd.magic,
      logd: logd.logd,
      decache: decache
    };
下面是我尝试去缓存的示例日志模块

\\plugins\log\log.js
var nfo = {
  fname: './log/log.js',
  wd: __dirname,
  cname: 'Logging',
  purpose: 'log server for the main server.',
  exuse: "function(logfile,logtext,err);"
};
var fs = require('fs');
console.log(nfo.cname + ' Plugin Mounted Sucsesfully');
function logd(logfile,logtext,err){
fs.appendFile(__dirname + "../../" + logfile, '\r\n' + logtext, function (err) {
if (err){
 console.log(err);
}
});

};

function magic(text){
console.log('text');
};

module.exports = {
 nfo: nfo,
 logd: logd,
 magic: magic
};
当代码运行时,这就是输出

不幸的是,似乎什么都没有发生,模块没有卸载,并且在衰减前后仍然可以调用来自模块的函数


有人知道为什么会发生这种情况吗?

试着包装你最后的插件。magic();暂停。我猜这是在decache完成之前执行的…在使用9000毫秒的超时后,脚本仍然能够调用函数。在查看decache的代码时,它看起来并没有实际销毁对象,只是销毁了缓存。您可能需要将logd设置为null。再看