私はwebpackを使用してReactJS Webアプリケーションを実装しています。ファイルをキャッシュするためにネットワークコールを処理するサービスワーカーの実装を開始したいと思います。しかし、サービスワーカーのjavascriptファイルを登録するのは難しいです。私は右のそれを取得した場合は(私はそれが反応し、WebPACKの両方に来るとき、私は初心者だと追加する必要があります。)webpackを使用してサービスワーカーを登録するには?
を、WebPACKのは難しいnavigator.serviceWorker.register('./sw.js')...
を呼び出すようになります1つのbundle.js
ファイルへのすべてのJavaScriptファイルをマージします。私はserviceworker-webpack-pluginのような異なるアプローチを試みましたが、運がありません。 readmeページに記載されている手順に従うと、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.
というエラーメッセージが表示されます。
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'
})
]
}
注:
は、ここに私のwebpack.config.js
ファイルです私は軌道に乗るためにcreate-react-app
コマンドを使用していました。また、サービスワーカー自体に問題はありません。別のWebアプリケーションの実装があります。それは私が苦労しているそれを登録しているだけです。
ご協力いただきましてありがとうございます。 のWebPACKが誤って綴られていること
plugins: [
new ServiceWorkerWepbackPlugin({
entry: path.join(__dirname, 'src/sw.js'),
}),
],
お知らせ:
を、私はそれを見つけましたバニラjsサービスワーカーを自分のファイルに入れて、webpack configのエントリポイントとして追加することで、簡単に登録できます。私は、オンライン/オフラインイベントが発生した場合に、特定のコンポーネントをリッスンして再レンダリングする、反応に特化したサービスワーカーをさらに深く知りたいと思います。あなた自身のように、私は反応するのがとても新しく、このような振る舞いのためには、還元が将来の道だと思っています。 Reduxは私がまだ苦労しているものです! –