我的问题
我正在编写一个node
名为 的模块a
,该require()
模块是一个模块b
(由陌生人编写)。不幸的是,a
不仅需要访问公共成员 - 它还需要访问在模块范围内声明的局部变量。
// a
var b = require('b');
console.log(b.public);
console.log(b.private); // undefined
// b
var c = require('c');
var stdin = process.stdin;
exports.public = true;
var private = true;
我的解决方案
// a
var b = require('b');
var srcPath = require.resolve('b');
console.log(b.public);
fs.readFile(srcPath, 'utf-8', function (err, src) {
var box = {};
var res = vm.runInNewContext(src, box, srcPath);
console.log(box.private);
});
但vm
不b
作为模块运行,因此require()
无法从vm
. 所以有ReferenceError
这样的:
var res = vm.runInNewContext(src, box, scPath);
^
ReferenceError: require is not defined
at <module b>
at <module a>
at fs.readFile (fs.js:176:14)
at Object.oncomplete (fs.js:297:15)
我的问题
获取在另一个模块中声明的局部变量的值的最干净的方法是什么?想法?
谢谢你的帮助。