Node.js モジュールをメモリから取得したいと考えてrequire
います。たとえば、実行時に生成されるか、ネットワーク ストリームから受信されるためです。
これはまったく可能ですか?
この問題をどのように解決できますか (もちろん、ディスクへの書き込みとそこからの読み込みは必要ありません)。
基本的には、次のようなものです。
var code = 'module.exports = { foo: "bar" };';
var obj = require(code);
console.log(obj.foo); // => bar
現在考えられる唯一のアプローチは、次のeval
ような関数を使用することです。
var myModule = {};
eval(
'(function (module) {' +
' var local = 5;' +
' module.exports = {' +
' foo: \'bar\'' +
' };' +
' module.exports.baz = \'baz\';' +
'})(myModule)');
評価後myModule.exports
、エクスポートされたオブジェクトが含まれます。
{
foo: 'bar',
baz: 'baz'
}
モジュール内でローカルであるべきものはすべてローカルのままです。
したがって、次のような関数を作成できますrequire2
。
var require2 = function (code) {
var temp = {};
eval('(function (module) {' + code + '})(temp);');
return temp.exports;
};
とにかく、私はより良いアイデアに興味があります... :-)
PS: ストリームからリクエストできることは素晴らしいことです :-)