【问题标题】:Deno web workers - Cannot find name "window"Deno 网络工作者 - 找不到名称“窗口”
【发布时间】:2020-06-06 20:37:13
【问题描述】:

我正在尝试使用 deno_webview 和 http 服务器运行 Deno 应用程序,但由于某种原因我无法同时运行两者,调用 webview.run() 似乎会阻止某些东西,我无法再访问我的 http服务器。

为了防止阻塞,我尝试在 webworker 中运行服务器或 webview,但在这两种情况下我都会收到相同的错误 "Cannot find name 'window'"

这里有什么问题?

api.webworker.ts

import { Application } from 'https://deno.land/x/oak/mod.ts';
const app = new Application();
await app.listen({ port: 8080 });

webview.webworker.ts

import { WebView } from 'https://deno.land/x/webview/mod.ts';
const webview = new WebView({ url: 'http://localhost:4200' });
await webview.run();

server.ts

const webviewWorker = new Worker(
   './workers/webview.worker.ts', { 
   type: 'module', 
   deno: true 
});

错误:

const apiWorker = new Worker(
   './workers/api.worker.ts', { 
   type: 'module', 
   deno: true 
});

错误:

【问题讨论】:

    标签: deno


    【解决方案1】:

    Web Workers 没有window 对象,你必须使用selfglobalThis

    所以https://deno.land/x/webview/mod.ts 不支持从 Web Worker 调用。

    库需要将 window 的用法更改为 globalThis,以便它可以在主进程和工作人员内部工作。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多