我需要调用一个函数,但它是以字符串形式给出的(本来它要复杂得多,并且包含更多嵌套的m()
函数。):
"m('p', {class:'red'}, 'text')"
该函数本身是NPM软件包,它是通过const m = require('mithril')
导入的。当我尝试使用进行转换时,
Function("m('p', {class:'red'}, 'text')")
...控制台显示ReferenceError: m is not defined
据我了解,当我使用Node.JS运行本地服务器时,它是一个不同的JS环境,而当我调用Function()
时,它来自一个不同的环境。因此,它无法识别以前声明的变量。
现在,原始问题非常复杂且难以描述。我问了一个先前的问题,我在其中详细描述了问题的整体情况: Evaluate a function call given as a string, which was declared with 'require'
有什么办法解决吗?
答案 0 :(得分:2)
要在该代码字符串中使用函数m
,您需要将其作为参数传递给函数:
const m = require(...);
const f = new Function("m", "m('p', {class:'red'}, 'text')");
f(m);