私の問題
私は という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)
私の質問
別のモジュールで宣言されたローカル変数の値を取得する最もクリーンな方法はどれですか? アイデア?
ご協力いただきありがとうございます。