好像我的节点模块中的私有变量正在"重置"。例如。我在模块中有以下代码
var exec = require('child_process').exec;
var process;
module.exports.start = function() {
if (!process) {
process = exec('Some process');
}
};
module.exports.stop = function() {
if (process) {
process.kill();
}
};
我遇到的问题是,如果我在process
之后调用stop
函数,则start
变量未定义。
显然,对此的修复是定义一个对象/类并在模块中公开它。
但现在我很想知道模块在节点中是如何工作的。当模块为require
时,所有私有变量会发生什么?
修改
我正在使用REPL中的这个模块进行测试,但一个示例用法就是
var my_module = require('./my_module');
// the child process starts fine
my_module.start();
// after some time
// but does not end
my_module.stop();
答案 0 :(得分:1)
来自node.js
文档:http://nodejs.org/api/modules.html
模块的本地变量将是私有的,就好像模块被包装在一个函数中一样。
因此,您的变量基本上只存在于模块所代表的clouse中。