Благодарим за руководство, но ваша конфигурация не подходит для текущей версии cra. теперь Cra использует плагин workbox-webpack, но не SWPrecacheWebpackPlugin. И я думаю, что мы можем изменить конфигурацию по умолчанию workbox-webpack-plugin, чтобы настроить наш service-worker.js. Мы можем изменить конфигурацию в файле config-overrides.js на это:
const rewireTypescript = require('react-app-rewire-typescript');
const workboxPlugin = require('workbox-webpack-plugin')
const path = require('path')
module.exports = {
webpack: function (config, env) {
config = rewireTypescript(config, env);
if (env === 'production') {
const workboxConfigProd = {
swSrc: path.join(__dirname, 'public', 'cus-service- worker.js'),
swDest: 'cus-service-worker.js',
importWorkboxFrom: 'disabled'
}
config = removePreWorkboxWebpackPluginConfig(config)
config.plugins.push(new workboxPlugin.InjectManifest(workboxConfigProd))
}
return config
}
}
// delete the default configuration of WorkboxWebpackPlugin
function removePreWorkboxWebpackPluginConfig (config) {
const preWorkboxPluginIndex = config.plugins.findIndex(
(element) => {return Object.getPrototypeOf(element).constructor.name === 'GenerateSW'
})
if (preWorkboxPluginIndex !== -1) {
config.plugins.splice(preWorkboxPluginIndex, 1)
}
return config
}