В ответе API, с которым я выполняю интеграцию, я получаю код JS внутри JSON, который мне нужно выполнить во время выполнения. Для этого я обычно использую оператор new Function()
. Хотя в большинстве случаев это работает нормально, есть и другие случаи, которые содержат ссылки на внешние библиотеки, такие как moment или loda sh. Вот пример такой JS строки:
{
...
"calculateValue": "value = moment().diff(moment(row.DateOfBirth), 'years');"
...
}
Итак, я создаю функцию, выполняя new Function('row', 'value = moment().diff(moment(row.DateOfBirth), 'years');')
, а затем выполняю ее. Однако я получаю сообщение об ошибке [ReferenceError: moment is not defined]
По логике, я попытался добавить ссылку на момент в файле, в котором выполняется функция, а также попытался безуспешно объединить оператор импорта со строкой.
Есть ли способ импортировать внешние библиотеки с использованием синтаксиса «new Function» или «eval»?
Пожалуйста, имейте в виду, что я получаю эти JS строки динамически, запрашивая данные из сервер не может их записать.