Nodejs vm2 — как импортировать скрипты

Предположим, у вас есть сценарий A: определяет библиотеку с помощью:

class MathFunctions { add(a, b) => { return a+b; } }

И у вас есть сценарий B: каким-то образом повторно использует MathFunctions:

const mf = import MathFunctions;
console.log(mf.add(2, 2));

И вы хотите выполнить B в контексте vm, импортировав A.

Как лучше всего это сделать с ненадежным кодом?

Аналогичный вопрос здесь: https://github.com/patriksimek/vm2/issues/121


person Robert Christian    schedule 07.05.2018    source источник


Ответы (1)


Система импорта узлов (const foo = require('foo');) работает, пропуская ваш код через препроцессор, который оборачивает его в функцию и передает require, module, exports, вы можете воспроизвести этот эффект, пропустив свой код также через препроцессор. К счастью, их много, поскольку в браузере также отсутствуют модули. Так что любой из препроцессоров модулей для браузеров (например, webpack) подойдет.

Что-то вроде new VM().run(webpack('./moduleB.js'))

person generalhenry    schedule 07.05.2018