Ank*_*nko 6 javascript eval require node.js
我有两个文件test.js,并x.js在同一目录下:
test.js:
console.log(eval( "require('x.js')" ));
Run Code Online (Sandbox Code Playgroud)x.js 是空的.
预期:require返回undefined,所以没有记录任何内容.
实际:node test.js给我Error: Cannot find module 'x.js'(为简洁省略了堆栈跟踪).
这种情况听起来与其他问题类似,我所使用的差异eval而不是new Function,并且require 被定义,只是出乎意料地工作.
为什么是这样?
如何require在eval'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.