我使用Webpack构建两个脚本(客户端和服务工作者)。
module.exports = {
entry: {
'js/client': path.resolve(__dirname, 'src/client/index.ts'),
sw: path.resolve(__dirname, 'src/service-worker/index.ts')
},
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
},
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
output: {
filename: '[name].[hash:5].js',
path: path.resolve(__dirname, 'dist'),
publicPath: '/'
}
}
在client
的某个地方,我必须提供sw
块的公共路径:
navigator.serviceWorker.register('/sw.js')
如何通过sw.js
带有散列的公共路径 到client.js
?
我尝试过:
const swUrl = require('file-loader!../service-worker/index.ts')
// or require('file-loader!ts-loader!../service-worker/index.ts')
navigator.serviceWorker.register(swUrl)
但是它产生错误的路径并发出*.ts
文件而不是*.js