TypeScript如何在Web Worker中导入外部模块

戴维·蒂伦

我正在尝试在网络工作者中的打字稿中使用外部模块,并且遇到了问题。测试示例的所有代码都在www.windward.net/temp/WebWorkerRequireJs.zip(下面列出的关键代码)中。

我想要的打字稿(在主线程中可以正常工作的是:

import myClass = require('my-class');
class WorkerThread {
}
self.onmessage = function (e) {
    console.log("client received message = " + e.data);
    var mc = new myClass.MyClass();
    console.log("worker thread toUpper = " + mc.toUpper("dave"));
    self.postMessage("from client");
}

这将生成以下javascript,但由于未定义define而失败:

define(["require", "exports", 'my-class'], function(require, exports, __myClass__) {
    var myClass = __myClass__;

    var WorkerThread = (function () {
        function WorkerThread() {
        }
        return WorkerThread;
    })();
    self.onmessage = function (e) {
        console.log("client received message = " + e.data);
        var mc = new myClass.MyClass();
        console.log("worker thread toUpper = " + mc.toUpper("dave"));
        self.postMessage("from client");
    };
});
//# sourceMappingURL=worker-thread.js.map

因此,在第1步中,我添加了importScripts并将其命名为.js文件:

importScripts('../../scripts/require.js');

define(["require", "exports", 'my-class'], function(require, exports, __myClass__) {
    var myClass = __myClass__;

    var WorkerThread = (function () {
        function WorkerThread() {
        }
        return WorkerThread;
    })();
    self.onmessage = function (e) {
        console.log("client received message = " + e.data);
        var mc = new myClass.MyClass();
        console.log("worker thread toUpper = " + mc.toUpper("dave"));
        self.postMessage("from client");
    };
});
//# sourceMappingURL=worker-thread.js.map

这不起作用,并给出了错误:

Uncaught Error: Mismatched anonymous define() module: function (require, exports, __myClass__) {
    var myClass = __myClass__;

    var WorkerThread = (function () {
        function WorkerThread() {
        }
        return WorkerThread;
    })();
    self.onmessage =...<omitted>...ch 

然后,我将“定义”切换为“需要”,并且可以正常工作:

importScripts('../../scripts/require.js');

require(["require", "exports", 'my-class'], function(require, exports, __myClass__) {
    debugger;
    var myClass = __myClass__;

    var WorkerThread = (function () {
        function WorkerThread() {
        }
        return WorkerThread;
    })();
    self.onmessage = function (e) {
        console.log("client received message = " + e.data);
        var mc = new myClass.MyClass();
        console.log("worker thread toUpper = " + mc.toUpper("dave"));
        self.postMessage("from client");
    };
});
//# sourceMappingURL=worker-thread.js.map

这就引出了一个问题-我如何获取打字稿以生成此脚本以便其运行。解决方案是建立一个主要的javascript文件,该文件是最初的Web Worker应用程序,然后调用Typescript部分吗?如果是这样,我该如何设置?

还是以某种方式告诉打字稿编译器从定义更改为要求并插入importScripts()的解决方案?

更新:看来(最佳?)解决方案是主要的Web工作程序文件是javascript文件。它具有importScripts()和主打字稿类的要求。您创建该类,然后从那里运行。到那时,打字稿“ import”引起“定义”所有作品。迄今为止...

巴萨拉特

工作文件不会由AMD加载程序加载,而将由浏览器加载。因此,您需要突破AMD代码生成的范围,并自己使用原始的“ require”调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在文件系统中导入外部模块?

来自分类Dev

无法在TypeScript中导入模块

来自分类Dev

如何在Python中导入liblas模块?

来自分类Dev

如何在Python中导入liblas模块?

来自分类Dev

如何在IPython集群中导入模块

来自分类Dev

如何在测试中导入测试模块?

来自分类Dev

如何在TypeScript的循环内导入外部模块?

来自分类Dev

虚拟环境-如何在导入的本地模块中导入?

来自分类Dev

未找到React模块-如何在React中导入模块

来自分类Dev

如何从下一个js的节点模块外部的文件夹中导入模块

来自分类Dev

在TypeScript中导入时“找不到模块”

来自分类Dev

如何不在Python模块中导入导入的子模块?

来自分类Dev

如何防止从模块中导入功能?

来自分类Dev

如何防止从模块中导入功能?

来自分类Dev

如何找到要在python中导入的模块

来自分类Dev

如何访问在 perl 模块中导入的变量?

来自分类Dev

如何将 TypeScript 类集中导入 Angular 模块?

来自分类Dev

没有类型定义的情况下如何在Typescript中导入节点模块?

来自分类Dev

如何在TypeScript中导入名称空间前缀等于自己名称空间后缀的模块(别名)?

来自分类Dev

当类型定义未声明模块时,如何在 TypeScript 中导入库?

来自分类Dev

如何在TypeScript中导入WebSocketSubject?

来自分类Dev

如何在Julia中导入自定义模块

来自分类Dev

如何在PyCharm控制台中导入自己的模块

来自分类Dev

如何在MapReduce作业中导入自定义模块?

来自分类Dev

如何在Python中导入子模块(不带exec)

来自分类Dev

如何在模块中导入lib文件夹

来自分类Dev

如何在Sublime Text插件中导入Python模块?

来自分类Dev

如何在ecmascript-6中导入模块?

来自分类Dev

如何在XQuery中导入公共模块名称空间

Related 相关文章

  1. 1

    如何在文件系统中导入外部模块?

  2. 2

    无法在TypeScript中导入模块

  3. 3

    如何在Python中导入liblas模块?

  4. 4

    如何在Python中导入liblas模块?

  5. 5

    如何在IPython集群中导入模块

  6. 6

    如何在测试中导入测试模块?

  7. 7

    如何在TypeScript的循环内导入外部模块?

  8. 8

    虚拟环境-如何在导入的本地模块中导入?

  9. 9

    未找到React模块-如何在React中导入模块

  10. 10

    如何从下一个js的节点模块外部的文件夹中导入模块

  11. 11

    在TypeScript中导入时“找不到模块”

  12. 12

    如何不在Python模块中导入导入的子模块?

  13. 13

    如何防止从模块中导入功能?

  14. 14

    如何防止从模块中导入功能?

  15. 15

    如何找到要在python中导入的模块

  16. 16

    如何访问在 perl 模块中导入的变量?

  17. 17

    如何将 TypeScript 类集中导入 Angular 模块?

  18. 18

    没有类型定义的情况下如何在Typescript中导入节点模块?

  19. 19

    如何在TypeScript中导入名称空间前缀等于自己名称空间后缀的模块(别名)?

  20. 20

    当类型定义未声明模块时,如何在 TypeScript 中导入库?

  21. 21

    如何在TypeScript中导入WebSocketSubject?

  22. 22

    如何在Julia中导入自定义模块

  23. 23

    如何在PyCharm控制台中导入自己的模块

  24. 24

    如何在MapReduce作业中导入自定义模块?

  25. 25

    如何在Python中导入子模块(不带exec)

  26. 26

    如何在模块中导入lib文件夹

  27. 27

    如何在Sublime Text插件中导入Python模块?

  28. 28

    如何在ecmascript-6中导入模块?

  29. 29

    如何在XQuery中导入公共模块名称空间

热门标签

归档