报错如下,大概的意思就是import不支持,换句话说就是不支持ts语法
[root@VM-20-7-opencloudos xzserver]# nodemon server.ts
[nodemon] 3.1.9
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: ts,json
[nodemon] starting `ts-node server.ts`
Server is running at http://localhost:4000
Worker 错误: /www/wwwroot/xzserver/QueueWorker.ts:1
import { parentPort } from 'worker_threads';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1032:15)
at Module._compile (node:internal/modules/cjs/loader:1067:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at MessagePort.<anonymous> (node:internal/main/worker_thread:187:24)
at MessagePort.[nodejs.internal.kHybridDispatch] (node:internal/event_target:647:20)
at MessagePort.exports.emitMessage (node:internal/per_context/messageport:23:28)
Worker 退出,退出码 1
原因大概就是子线程文件没有继承主线程文件的配置tsconfig.ts导致的问题
解决的办法也相对比较简单,但是要在调用子线程文件的主线程那边处理
子线程要这样子启动,保证你的模块里面包含tsnode,没有的话要下载
const worker = new Worker(path.resolve(__dirname, './worker.ts'),
{execArgv: ['-r', 'ts-node/register', '--inspect']}); // 假设你的 Worker 文件名是 worker.ts
tsconfig.json如下
{
"compilerOptions": {
"esModuleInterop": true,
// "module": "commonjs",
"module": "CommonJS",
"target": "ES6",
"strict": true
}
}
评论已关闭