在 Node 中,我如何在 eval 中要求文件?
In Node, how do I require files inside eval?
我在同一目录中有两个文件 test.js
和 x.js
:
test.js
:
console.log(eval( "require('x.js')" ));
x.js
为空。
预期:require
returnsundefined
,所以没有记录。
实际: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
。
我在同一目录中有两个文件 test.js
和 x.js
:
test.js
:console.log(eval( "require('x.js')" ));
x.js
为空。
预期:require
returnsundefined
,所以没有记录。
实际: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
。