Bla*_*ine 4 worker-thread node.js typescript ts-node
我计划为 socket.io 房间提供工作线程。我在与房间的第一个连接上创建一个工作线程,然后设置 firebase 侦听器。
很遗憾。我在工作文件和我的主要源代码中有常见的导入。
我按照这篇文章允许通过worker_threads运行ts文件 - > https://wanago.io/2019/05/06/node-js-typescript-12-worker-threads/
不幸的是,我没有得到顶级等待,并且在启动工作线程时,出现以下错误。
error TS2451: Cannot redeclare block-scoped variable 'tslib_1'.\r\n"
这是我的 tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"lib": ["esnext"],
"module": "commonjs",
"importHelpers": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"baseUrl": ".",
"sourceMap": true,
"declaration": false,
"noImplicitAny": false,
},
"files": [
"typings.d.ts"
],
}
Run Code Online (Sandbox Code Playgroud)
您尚未提供有关如何运行应用程序的任何信息,因此我将假设以下设置:
\n您通过在命令行上要求来运行主应用程序ts-node:
node -r ts-node/register index.ts\nRun Code Online (Sandbox Code Playgroud)\n您的工作程序入口点是一个.ts文件,您可以按如下方式实例化它:
new Worker(\'./worker.ts\')\nRun Code Online (Sandbox Code Playgroud)\n您的工作脚本顶部附近有以下代码:
\nrequire(\'ts-node\').register();\nRun Code Online (Sandbox Code Playgroud)\n假设这是您的设置,您需要删除该行
\nrequire(\'ts-node\').register();\nRun Code Online (Sandbox Code Playgroud)\n来自您的工作人员入口点脚本。此行基本上导致 TypeScript 文件被 编译两次ts-node,因此出现双重声明错误tslib_1。
ts-node仅当您的主程序不以该标志启动时,才需要像上面那样手动注册-r ts-node/register。如果是,那么ts-node当您实例化您的工作线程时将自动需要它,并将即时编译所请求的 TS 源。
使用 Worker 时还必须记住其他一些问题:
\nnew Worker(...)相对于您的工作目录解析请求的文件,如果您想相对于当前源文件解析,您需要执行如下操作:new\xc2\xa0Worker(path.resolve(__dirname,\xc2\xa0\'./worker.ts\'))。ts-node生产中使用,而是通过 编译源代码tsc,则在源代码编译为 JS 后,您将无法加载工作脚本,您的工作文件将变成worker.js(注意文件扩展名)。您需要检测这种情况并相应地更改路径。| 归档时间: |
|
| 查看次数: |
7503 次 |
| 最近记录: |