Webpack worker加载程序导入失败,原因是文件[...]不是模块

时间:2018-07-19 08:21:03

标签: typescript webpack web-worker worker-loader

我正在尝试根据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编译器会发出上述错误。

有什么想法吗?

0 个答案:

没有答案