Sign In
avatar

LY'S BLOG & WELCOME

——

create-react-app创建项目后启动报错

2022/10/27

警告在启动时一闪而过,不仔细看还真不会注意,因为一点不影响运行,但是看到了就是不舒服。

前一段是“不推荐使用警告”,说的是:不推荐使用“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;
},

重新运行项目,就不会报错了。

assistant