Я использую веб-приложение ReactJS с помощью webpack, и я хочу начать внедрение рабочего сервиса для обработки сетевых вызовов, чтобы кэшировать файлы. Тем не менее, мне трудно зарегистрировать файл javascript для рабочего пользователя службы. (Я должен добавить, что я новичок, когда дело касается как React, так и webpack.)
Если я получу это правильно, webpack объединяет каждый файл javascript в один файл bundle.js
, что затрудняет вызов navigator.serviceWorker.register('./sw.js')...
. Я пробовал разные подходы, такие как 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.
.
Здесь мой файл 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
для продолжения. Кроме того, у меня нет проблем с самим работником службы, у меня есть рабочая реализация для другого веб-приложения. Это просто регистрация, с которой я борюсь.
Любая помощь приветствуется!