首页 > 解决方案 > 将字符串转换为函数,给出 ReferenceError

问题描述

我需要调用一个函数,但它是以字符串形式给出的(最初它要复杂得多,并且包含更多嵌套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(),它来自不同的环境。因此它不能识别先前声明的变量。

现在,原来的问题相当复杂,难以描述。我问了一个先前的问题,我详细说明了问题的全貌: 评估作为字符串给出的函数调用,它是用'require'声明的

任何想法如何解决它?

标签: javascript

解决方案


为了m在该代码字符串中使用该函数,您需要将其作为参数传递给该函数:

const m = require(...);
const f = new Function("m", "m('p', {class:'red'}, 'text')");
f(m);

推荐阅读