在 Node 中,我如何在 eval 中要求文件?

In Node, how do I require files inside eval?

我在同一目录中有两个文件 test.jsx.js

预期requirereturnsundefined,所以没有记录。

实际node test.js 给我 Error: Cannot find module 'x.js'(为简洁起见省略了堆栈跟踪)。

情况听起来与 this other question 相似,不同之处在于我使用 eval 而不是 new Function,而 require 已定义,只是意外工作。


这是为什么?

如何正确 require eval 代码中的模块?

require()一个本地file/module,路径应该start with . (same directory) or .. (parent directory):

console.log(eval( "require('./x.js')" ));

没有其中任何一个,Node 将 x.js 视为 core module or contained in a node_modules directory


除非eval被间接引用:

var e = eval;           // global eval
e("require('./x.js')"); // ReferenceError: require is not defined

它应该在当前范围内评估字符串并能够引用 require