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

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

除非间接引用eval:

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

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

原文链接:https://www.f2er.com/js/150897.html

猜你在找的JavaScript相关文章