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

Ank*_*nko 6 javascript eval require node.js

我有两个文件test.js,并x.js在同一目录下:

预期:require返回undefined,所以没有记录任何内容.

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

这种情况听起来与其他问题类似,我所使用的差异eval而不是new Function,并且require 定义,只是出乎意料地工作.


为什么是这样?

如何requireeval'd代码中正确使用模块?

Jon*_*ski 11

对于require()本地文件/模块,路径应.(相同目录)或..(父目录)开头:

console.log(eval( "require('./x.js')" ));
Run Code Online (Sandbox Code Playgroud)

如果没有这类原因,节点查找x.js是一个核心模块包含在node_modules目录中.


除非eval间接引用:

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

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

  • 不用觉得自责.你的问题现在将帮助每个人在未来犯同样的错误:) (4认同)