小编Jua*_*nal的帖子

如何避免 Deno Workers 中缓存源​​代码

下午好,我正在开发一个基于 Deno Workers 的 javascript 代码执行环境。我还有一个 Oak Web 服务器,用于处理脚本中代码更改的请求以及这些的编译和执行。

当我请求执行一个脚本(例如 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" }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

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 …
Run Code Online (Sandbox Code Playgroud)

javascript worker typescript deno

5
推荐指数
1
解决办法
310
查看次数

标签 统计

deno ×1

javascript ×1

typescript ×1

worker ×1