Microsoft.AspNetCore.SpaServices[0]在.NET命令提示符处出错

14ifxucb  于 2023-05-19  发布在  .NET
关注(0)|答案(1)|浏览(240)

当我运行基于.NET Core 3.1的项目时,我在命令提示符下收到此错误,该项目也使用了react

fail: Microsoft.AspNetCore.SpaServices[0]
      (node:15004) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.

fail: Microsoft.AspNetCore.SpaServices[0]
      (Use `node --trace-deprecation ...` to show where the warning was created)
(node:15004) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.

warn: Microsoft.AspNetCore.Watch.BrowserRefresh.BrowserRefreshMiddleware[4]
      Unable to configure browser refresh script injection on the response. This may have been caused by the response's Content-Encoding: 'gzip'. Consider disabling response compression.

我已经搜索并找到了几个答案,有些人说在我的中间件中添加setUpMiddlewares
spa.UseReactDevelopmentServer(npmScript: "start" , setUpMiddleware => {});
但这是不可能的,因为这个方法没有这样的重载。
我已经尝试通过更新NuGet包到最大兼容版本

vqlkdk9b

vqlkdk9b1#

我们可以通过使用以下代码来修复这个问题,更多细节,我们可以检查github问题。

DeprecationWarning Solution:

DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] 
DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated.
In file: node_modules/react-scripts/config/webpackDevServer.config.js

like this

onBeforeSetupMiddleware(devServer) {
    // Keep `evalSourceMapMiddleware`
    // middlewares before `redirectServedPath` otherwise will not have any effect
    // This lets us fetch source contents from webpack for the error overlay
    devServer.app.use(evalSourceMapMiddleware(devServer));

    if (fs.existsSync(paths.proxySetup)) {
    // This registers user provided middleware for proxy reasons
    require(paths.proxySetup)(devServer.app);
    }
},
onAfterSetupMiddleware(devServer) {
    // Redirect to `PUBLIC_URL` or `homepage` from `package.json` if url not match
    devServer.app.use(redirectServedPath(paths.publicUrlOrPath));

    // This service worker file is effectively a 'no-op' that will reset any
    // previous service worker registered for the same host:port combination.
    // We do this in development to avoid hitting the production cache if
    // it used the same host and port.
    // https://github.com/facebook/create-react-app/issues/2272#issuecomment-302832432
    devServer.app.use(noopServiceWorkerMiddleware(paths.publicUrlOrPath));
},

Change to this: 

setupMiddlewares: (middlewares, devServer) => {
    if (!devServer) {
        throw new Error('webpack-dev-server is not defined')
    }

    if (fs.existsSync(paths.proxySetup)) {
        require(paths.proxySetup)(devServer.app)
    }

    middlewares.push(
        evalSourceMapMiddleware(devServer),
        redirectServedPath(paths.publicUrlOrPath),
        noopServiceWorkerMiddleware(paths.publicUrlOrPath)
    )

    return middlewares;
},

相关问题