Добрый день, я разрабатываю среду выполнения кода javascript на основе Deno Workers. У меня также есть веб-сервер Oak, который обрабатывает запросы на изменение кода в скрипте, а также их компиляцию и выполнение.
Проблема начинается, когда я запрашиваю выполнение скрипта (например, console.log ()) а позже я изменяю указанный код, когда снова пытаюсь выполнить этот сценарий, Deno выполняет Worker до изменения и учитывает изменение только после перезапуска сервера Oak.
export class Runner {
private task: Task;
constructor(task: Task) {
this.task = task;
}
async run() {
new Worker(
new URL(await joinPath(`tasks/${this.task.id}/output.js`), import.meta.url).href,
{ type: "module" }
);
}
}
Класс Runner отвечает за инициализации Worker, для каждого запроса на выполнение создается новый экземпляр Runner и, следовательно, Worker.
// oak router
router.get("/api/tasks/:id/run", async ctx => {
const id: any = ctx.params.id;
if (!id) ctx.throw(500);
const task: Task = await get(id);
const compiler: Compiler = new Compiler(task);
const runner: Runner = new Runner(task);
await compiler.compile();
await runner.run();
ctx.response.body = 'ok';
});
Это функция, которая обрабатывает запрос, который, в свою очередь, создает экземпляр класса Runner.
Заранее большое спасибо.