Благодарим за руководство, но ваша конфигурация не подходит для текущей версии 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 }