我正在尝试执行一个函数对象,它与以下伪代码基本相同:
var testF = new Function("x","y", "var http = require('http');");
testF('foo','bar');
并获得:
ReferenceError: require is not defined
我需要在Node中添加一些东西来重新加载要求的模块吗?如果需要,因为它不是全局模块,所以谷歌并没有给出帮助。如果有的话,请提供如何实现的指针。
感谢您的建议。
我正在尝试执行一个函数对象,它与以下伪代码基本相同:
var testF = new Function("x","y", "var http = require('http');");
testF('foo','bar');
并获得:
ReferenceError: require is not defined
我需要在Node中添加一些东西来重新加载要求的模块吗?如果需要,因为它不是全局模块,所以谷歌并没有给出帮助。如果有的话,请提供如何实现的指针。
感谢您的建议。
由于new Function是eval的一种形式,因此您可以直接使用eval
:
eval("function testF(x,y){ console.log(require);}");
testF(1,2);
var testF = new Function(
'exports',
'require',
'module',
'__filename',
'__dirname',
"return function(x,y){console.log(x+y);console.log(require);}"
)(exports,require,module,__filename,__dirname);
testF(1,2);
使用同样调用Function构造函数的方法,另一种可能的解决方案:
var testF = new Function("x","y", "var require = global.require || global.process.mainModule.constructor._load; var http = require('http');");
testF('foo','bar');