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

前端之家收集整理的这篇文章主要介绍了javascript – 在Node中,我如何要求eval中的文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个文件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@

如何在eval’d代码中正确要求模块?@H_404_3@

解决方法

要require()本地文件/模块,路径应为 start with . (same directory) or .. (parent directory)
console.log(eval( "require('./x.js')" ));

如果没有这些,Node会将x.js视为core modulecontained 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@

猜你在找的JavaScript相关文章