javascript - 如何从代码文本加载模块?

标签 javascript node.js

我想从原始文本加载模块,例如

var code = "exports.name = 'hello'";
// Is there such a function?
var name = requrie_from_code(code).name;
console.log(name); // should be 'hello'

我认为可以通过首先将代码保存到临时文件中来完成,例如 tmpcode.js然后require('./tmpcode.js') 。但有没有办法直接做到呢?

最佳答案

要将 JavaScript 字符串解释为 JavaScript 本身,您可能应该使用 eval 函数...但是请注意我的警告,如果存在任何形式的用户输入,或者如果您需要复杂的调试,您将会遇到一些困难,并且会受到伤害。

JavaScript 的 eval 接受字符串输入并解释它,就这么简单......下面是一个示例:

var test = "var example = 5;";
eval(test);
console.log(example);

就这么简单...

<小时/>

以下是 eval 可能很危险的一些情况!

假设您由于某种原因有以下代码:

dbModule.syncConnection(function(database){
  eval("var test = '" + someUserInput + "'");
});

这样,用户可以通过输入如下内容轻松绕过您设置的内容:

"'; database.query('DELETE EVERYTHING MWAHAHA'); '"

eval 函数将变成:

var test = ''; database.query('DELETE EVERYTHING MWAHAHA'); ''

...这只是一个简单的例子,说明了 eval 是如何危险的。

否则,在解释 JavaScript 之前确实没有任何其他安全的方法来检查它,除非您自己运行字符串并禁止某些可能的攻击......

但请记住,任何可能出错的事情都会出错。通过用户输入,就有无限的可能性。

关于javascript - 如何从代码文本加载模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511480/

相关文章:

javascript - Laravel - 让 vue 与其他插件一起工作

javascript - 将对象中的所有元素添加到 FormData 对象 - JavaScript

javascript - 在电子商务网站中添加多个商品到购物车(add to cart)

node.js - PhpStorm/WebStorm node_modules 和 package.json

ios - node ios socket.io SSL 适用于 xcode 调试但不适用于 ipa 安装

javascript - 替换javascript中的类值

javascript - 使用jquery获取最近表格单元格中文本区域的值

Node.js读取文件,如果存在则追加数据,如果不存在则创建文件

node.js - Mongodb NodeJS驱动程序skip()不起作用

node.js - Gulp-Imagemin 的 EACCES 错误