Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 此网页包devServer如何配置不正确?_Reactjs_Webpack_Webpack Dev Server - Fatal编程技术网

Reactjs 此网页包devServer如何配置不正确?

Reactjs 此网页包devServer如何配置不正确?,reactjs,webpack,webpack-dev-server,Reactjs,Webpack,Webpack Dev Server,我的网页开发服务器遇到问题。当我尝试在指定路线加载时,例如“http://localhost:3000/login我收到以下消息“无法获取/登录” 我通读了文档,看到了许多不同的解决方案,但我没有看到配置中的缺陷。我有这样的网页设置 webpack.config.js module.exports = { mode: 'development', entry: './src/index.js', output: { path: path.resolve(__dirname,

我的网页开发服务器遇到问题。当我尝试在指定路线加载时,例如“http://localhost:3000/login我收到以下消息“无法获取/登录”

我通读了文档,看到了许多不同的解决方案,但我没有看到配置中的缺陷。我有这样的网页设置

webpack.config.js

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'build'),
    filename: 'bundle.js',
  },
  module: [ rules... ],
  devServer: {
    contentBase: path.join(__dirname, 'build'),
    compress: true,
    port: 3000
  },
}
我的应用程序脚本如下所示:

"build": "webpack",
"dev": "webpack-dev-server --open"
如果我运行dev,应用程序将打开到初始路由-“/”。如果我点击一个链接登录-“/login”,这将加载罚款。但是如果我在登录时刷新页面,它将抛出“无法获取/登录”错误


我的网页包配置中是否缺少或有错误?

网页包开发服务器只提供两种功能:捆绑资产和目录中作为
contentBase
值的内容。当你浏览到/然后导航到/登录时,事情按照你想要的方式进行,因为我假设你的webapp中有某种客户端路由框架。当您刷新浏览器并在/login请求服务器提供页面时,这些都不适用

w-d-s正在向您发送404,因为您的构建目录中没有名为“login”的文件(我怀疑您是否有使用该名称的已编译包或块)。该目录中是否有index.html文件?这就是您访问localhost:3000/时得到的服务吗?该文件是否有加载您的Web应用程序的
标记

当您访问/登录时,您希望发生什么?我假设你想在访问localhost:3000/登录时显示你的webapp的登录屏幕?如果是这样,您很可能需要使用单独的服务器(如express.js)来在服务器端渲染您的webapp。此服务器可以位于与w-d-s启动的服务器不同的端口上,也可以实际使用w-d-s作为中间件,因此您只需要一台服务器和一个端口


乍一看,这似乎是一个不错的资源:。但是如果它不适合你,那么已经有几十个了。webpack dev server只提供两件事:捆绑资产,以及你给它的目录中的任何东西作为
contentBase
的值。当你浏览到/然后导航到/登录时,事情按照你想要的方式进行,因为我假设你的webapp中有某种客户端路由框架。当您刷新浏览器并在/login请求服务器提供页面时,这些都不适用

w-d-s正在向您发送404,因为您的构建目录中没有名为“login”的文件(我怀疑您是否有使用该名称的已编译包或块)。该目录中是否有index.html文件?这就是您访问localhost:3000/时得到的服务吗?该文件是否有加载您的Web应用程序的
标记

当您访问/登录时,您希望发生什么?我假设你想在访问localhost:3000/登录时显示你的webapp的登录屏幕?如果是这样,您很可能需要使用单独的服务器(如express.js)来在服务器端渲染您的webapp。此服务器可以位于与w-d-s启动的服务器不同的端口上,也可以实际使用w-d-s作为中间件,因此您只需要一台服务器和一个端口


乍一看,这似乎是一个不错的资源:。但是如果它不适合你,那么已经有几十种了。我相信你错过了html5历史模式的服务器配置。这就是我们如何在不改变页面的情况下改变url(但用户认为我们在改变页面)。您可以通过将几乎每个请求(不是资产或其他东西)重定向回top/index.html来修复它。当您将最终结果部署到一个真正的服务器时,您也需要这样做,但是对于devserver,配置如下:
devserver:{historyApiFallback:true}
为我解决了这个问题,谢谢!我确实理解路由背后的逻辑,只是知道有一些方法可以通过webpack dev server解决这个问题,而不必在dev上使用服务器。我相信您缺少html5历史模式的服务器配置。这就是我们如何在不改变页面的情况下改变url(但用户认为我们在改变页面)。您可以通过将几乎每个请求(不是资产或其他东西)重定向回top/index.html来修复它。当您将最终结果部署到一个真正的服务器时,您也需要这样做,但是对于devserver,配置如下:
devserver:{historyApiFallback:true}
为我解决了这个问题,谢谢!我确实理解路由背后的逻辑,只是知道有一些方法可以通过webpack dev server解决问题,而不必在dev上使用服务器。@ippi就这个问题发表了评论,描述了一种比我更简单的解决方法!如果您不关心生产准备情况,那么这似乎更适合作为询问资源的问题!我只是为了在这个项目上获得一个更简单的开发体验而玩弄WebpackDevServer。在应用程序im构建中,服务器端渲染并不是真正必要的,但我一直在其他一些项目中使用它,所以我很欣赏它link@ippi评论确实有助于我的解决方案!但是谢谢你花时间回答我的问题,我很感激it@ippi在这个问题上留下了评论,它描述了一种比我更容易解决的方法!如果您不关心生产准备情况,那么这似乎更适合作为询问资源的问题!我只是为了在这个项目上获得一个更简单的开发体验而玩弄WebpackDevServer。在应用程序im构建中,服务器端渲染并不是真正必要的,但我一直在其他一些项目中使用它,所以我很欣赏它link@ippi评论确实有助于我的解决方案!但是谢谢你花时间回答我的问题我很感激