Преобразовать строку в функцию, дает ReferenceError - PullRequest
0 голосов
/ 06 января 2019

Мне нужно вызвать функцию, но она указана в виде строки (изначально она намного сложнее и включает в себя гораздо больше вложенных 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'

Есть идеи, как ее решить?

1 Ответ

0 голосов
/ 06 января 2019

Чтобы использовать функцию m в этой строке кода, вам необходимо передать ее в качестве параметра функции:

const m = require(...);
const f = new Function("m", "m('p', {class:'red'}, 'text')");
f(m);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...