javascript - 将字符串转换为函数,给出 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'声明的
任何想法如何解决它?
解决方案
为了m
在该代码字符串中使用该函数,您需要将其作为参数传递给该函数:
const m = require(...);
const f = new Function("m", "m('p', {class:'red'}, 'text')");
f(m);
推荐阅读
- python - Pygame的绘制函数——像素细节
- node.js - 试图从 req.body 捕获数据它给我带来了一个空对象?
- android-studio - Android Studio Flutter 调试 FileSystemException
- django - Django 无法将模型加载到视图中
- bash - 使用 AWK 根据第一列合并唯一行
- android - 如何在点击时选择随机颜色?
- node.js - Clasp 登录失败:“检索访问令牌时出错...”
- java - Java迷宫打破封闭
- tomcat - 如何使用 java.util.logging.SimpleFormatter 为 Tomcat 的控制台日志指定单独的日志格式
- angular - 类型上不存在属性“播放器”