我正在尝试根据worker loader文档(https://github.com/webpack-contrib/worker-loader)中的示例设置一个Worker。
不幸的是,构建失败并显示错误消息:
TS2306: File 'MyWorker.worker.ts is not a module
webpack.config
module {
rules: [
{
test: /\.worker\.ts$/,
use: [{ loader: 'worker-loader' }, { loader: 'babel-loader' }, { loader: 'ts-loader' }],
}
}
我还声明了文档中所述的模块
declare module '*.worker' {
class WebpackWorker extends Worker {
constructor()
}
export default WebpackWorker
}
MyWorker.worker.ts(简体)
const context: Worker = self as any
class MyWorker {
constructor() {
addEventListener('message', e => {
/* do message handling */
context.postMessage(/* message handling result */)
}
}
}
export default MyWorker
最后是导入模块
import MyWorker from 'MyWorker.worker'
const myWorker = new MyWorker()
/* fun stuff with worker */
如果我将TypeScript辅助代码包含在JavaScript代码中,那么一切正常。如果正在使用工作程序的代码也是TypeScript,则TS编译器会发出上述错误。
有什么想法吗?