我有两个文件test.js和x.js,在同一目录中:
> test.js:@H_404_3@
console.log(eval( "require('x.js')" ));
> x.js为空.@H_404_3@
预期:要求返回undefined,因此不记录任何内容.@H_404_3@
实际:节点test.js给我错误:找不到模块’x.js'(为简洁省略了stack-trace).@H_404_3@
情况听起来类似于this other question,差异是我使用了eval而不是新的Function,并且需要定义,只是意外地工作.@H_404_3@
为什么是这样?@H_404_3@
解决方法
要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.@H_404_3@
除非间接引用eval:@H_404_3@
var e = eval; // global eval e("require('./x.js')"); // ReferenceError: require is not defined
它应该评估当前范围内的字符串并能够引用require.@H_404_3@