@H_404_1@我有两个文件test.js和x.js,在同一目录中:
> test.js:
console.log(eval( "require('x.js')" ));
> x.js为空.
预期:要求返回undefined,因此不记录任何内容.
实际:节点test.js给我错误:找不到模块’x.js'(为简洁省略了stack-trace).
情况听起来类似于this other question,差异是我使用了eval而不是新的Function,并且需要定义,只是意外地工作.
为什么是这样?
如何在eval’d代码中正确要求模块?
解决方法
要require()本地文件/模块,路径应为
start with
.
(same directory) or ..
(parent directory):
console.log(eval( "require('./x.js')" ));
如果没有这些,Node会将x.js视为core module或contained in a node_modules
directory.
除非间接引用eval:
var e = eval; // global eval e("require('./x.js')"); // ReferenceError: require is not defined
它应该评估当前范围内的字符串并能够引用require.