警告在启动时一闪而过,不仔细看还真不会注意,因为一点不影响运行,但是看到了就是不舒服。
前一段是“不推荐使用警告”,说的是:不推荐使用“onAfterSetupMiddleware”选项。请使用“setupMiddlewares”选项。
后一段是“弃用警告”,说的是:“onBeforeSetupMiddleware”选项已弃用。请使用“setupMiddlewares”选项。
onAfterSetupMiddleware和onBeforeSetupMiddleware这两个东西在目录明面上找不到,其实他们是在weback的config配置文件中,但是create-react-app把webpack的配置文件进行了封装,我们在目录上看不到webpack.config.js这个文件。
可以使用eject指令来抽离配置文件,在package.json中可以看到这个指令
直接运行 npm run eject 来抽离配置文件。注意:此操作不可逆!
抽离完后目录就多了两个文件夹
在config文件夹下的webpackDevServer.config.js文件中
就可以找到onBeforeSetupMiddleware和onAfterSetupMiddleware这两个方法了,把这两个弃用的方法替换了就行了。
setupMiddlewares: (middlewares, devServer) => {
if (!devServer) {
throw new Error('webpack-dev-server is not defined');
}
middlewares.unshift({
name: 'evalSourceMapMiddleware',
middleware: evalSourceMapMiddleware(devServer),
});
if (fs.existsSync(paths.proxySetup)) {
// This registers user provided middleware for proxy reasons
require(paths.proxySetup)(devServer.app);
}
middlewares.push({
name: 'redirectServedPath',
middleware: redirectServedPath(paths.publicUrlOrPath),
});
middlewares.push({
name: 'noopServiceWorkerMiddleware',
middleware: noopServiceWorkerMiddleware(paths.publicUrlOrPath),
});
return middlewares;
},
重新运行项目,就不会报错了。