我正在使用webpack實現一個ReactJS web應用程序,我想開始實施一個服務工作者來處理網絡調用,以緩存文件。但是,我發現很難註冊服務工作者JavaScript文件。 (我要補充一點,我是一個初學者,當談到這兩個反應,的WebPack。)如何使用webpack註冊服務人員?
如果我得到它的權利,合併的WebPack每javascript文件到一個bundle.js
文件,這使得它很難稱之爲navigator.serviceWorker.register('./sw.js')...
。我嘗試了不同的方法,例如serviceworker-webpack-plugin,但沒有運氣。如果我按照自述頁面上提供的步驟操作,我會收到一條錯誤消息Uncaught Error: serviceworker-webpack-plugin: It seems that your are importing "serviceworker-webpack-plugin/lib/runtime" without using the plugin. Makes sure that your webpack configuration is correct.
。
這是我的webpack.config.js
文件:
var webpack = require('webpack');
var path = require('path');
import ServiceWorkerWebpackPlugin from 'serviceworker-webpack-plugin';
module.exports = {
devtool: 'inline-source-map',
entry: [
'webpack-dev-server/client?http://127.0.0.1:8080/',
'webpack/hot/only-dev-server',
'./src/index.js'
],
output: {
path: path.join(__dirname, 'public'),
filename: 'bundle.js'
},
resolve: {
modulesDirectories: ['node_modules', 'src'],
extensions: ['', '.js']
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: ['babel-loader'],
query: {
presets: ['es2015','react']
}
}
]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
new ServiceWorkerWebpackPlugin({
entry: path.join(__dirname, 'src/sw.js'),
excludes: [
'**/.*',
'**/*.map',
'*.html',
],
filename: 'sw.js'
})
]
}
注:我用create-react-app
命令走了。另外,我對服務人員本身沒有任何問題,我有另一個Web應用程序的工作實施。它只是註冊我正在努力。
任何幫助表示讚賞!
我發現它容易註冊一個香草js服務工作者通過把它放入它自己的文件並將它添加爲我的webpack配置中的一個入口點。如果觸發在線/離線事件,我想深入瞭解一個反應特定的服務工作人員,該服務人員監聽並重新呈現給定的組件。就像你自己,我是一個新的反應,我想知道是否是這種行爲的前進方向。 Redux是我仍然在努力的事情! –