我正在尝试创建一个能够通过模块decache删除模块的脚本。
经过大量研究后我发现这是可能的,每个人都将其描述为使用不同于正常的需要语法。
不幸的是,我尝试了所有不同的方法,但似乎没有任何东西可以解密该模块。
这是代码。
\\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
};
运行代码时,这是输出。
不幸的是,似乎没有任何反应,模块没有被卸载,模块中的功能仍然可以在分解之前和之后调用。
有没有人对为什么会这样做有任何想法?