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

时间:2015-05-09 14:07:38

标签: javascript node.js eval require

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

  • test.js

    console.log(eval( "require('x.js')" ));
    
  • x.js为空。

预计require会返回undefined,因此不记录任何内容。

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

情况听起来与this other question类似,我使用eval而不是new Function,而require 的差异已经定义,只是意外地工作。

为什么会这样?

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

1 个答案:

答案 0 :(得分:11)

require()本地文件/模块,路径应为start with . (same directory) or .. (parent directory)

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

如果没有其中任何一个,Node会将x.js视为core modulecontained in a node_modules directory

除非间接引用eval

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

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