执行 Function 对象时节点“ReferenceError: require is not Define”

Sco*_*aph 3 function require node.js

我正在尝试执行一个 Function 对象,该对象与以下伪代码本质上相同:

var testF = new Function("x","y", "var http = require('http');");
testF('foo','bar');
Run Code Online (Sandbox Code Playgroud)

并得到:

ReferenceError: require is not defined
Run Code Online (Sandbox Code Playgroud)

我是否需要以某种方式添加一些东西来重新加载 require 模块,因为它不是 Node 中的全局模块?如果是这样,谷歌就不是我的朋友,所以任何关于如何做到这一点的指示都会很棒。

感谢您的想法。

Mar*_*hii 8

由于new Function 是 eval 的一种形式,因此您可以eval

eval("function testF(x,y){ console.log(require);}");
testF(1,2);
Run Code Online (Sandbox Code Playgroud)

如果您想遵循原始方法,您需要将这些全局变量传递到函数作用域:

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); 
Run Code Online (Sandbox Code Playgroud)