【问题标题】:webpack-dev-server 404 & how to set it up correctly?webpack-dev-server 404 以及如何正确设置它?
【发布时间】:2017-01-08 16:00:34
【问题描述】:

我来自哪里

我使用 webpack 已经有一段时间了,但这是我第一次不为它修改入门工具包,而是尝试从头开始设置所有内容。

我遵循this nice article on survivejs.com 并继承了其中描述的一些方法,将它们与我早期的一些设置相结合(例如根据发送的生产变量设置不同的名称和路径)。

我尝试在讲座期间尽可能多地运行“构建”和“启动”,以免被一些我无法追踪的意外行为所困扰。这很好用。

然后在某个时间点,在摆弄关于excluding unused css from third party frameworks 的章节时我不知何故破坏了我的开发服务器设置"run build" 仍然有效!)

问题

我的热服务器定义在 192.168.1.2:3000(这正是我想要的)。 当我使用下面进一步显示的设置运行webpack-dev-server 时,我在该位置得到 404 (Cannot GET /)。 现在我已经阅读了很多关于如何正确设置 webpack 开发服务器的信息,但我仍然没有正确理解......(很可能不是一个人在这里......)因为事实上我还没有完全理解路径是如何工作的。

这是我的理解(通用开发服务器设置):

(如果我错了,请帮助我)

  • webpack.config.js 的输出路径将仅在运行开发服务器时在内存中提供,因此在物理上不可见(例如,如果输出为 path: path.join(__dirname, 'devServerFolder',我将永远不会在我的项目结构中的任何位置看到该文件夹如果不是我创造的)
  • 在我用publicPathcontentBase 指向的文件夹中需要一个指向我的bundle.js 的静态index.html(这可能是我需要创建的devServerFolder里面有index.html;通常在网络上的大多数设置中,相同的public文件夹用于保存生产版本)
  • 如果我使用html-webpack-plugin,插件将自动为我生成该文件,而无需指向任何内容,因为 bundle.js 由插件写入其中

这些是真正困扰我理解的一些要点。我试过 lotsofdifferentcombinations 玩弄 publicPathcontentBase 设置,但没有运气重新建立我的开发服务器(首先工作正常)。 请注意,我在代码或使用 run build 编译我的构建时没有任何问题,它工作正常,就像它应该的那样。

配置

文件夹结构

webpack.test
|
| - app                    // App folder
     |
     | - index.js          // Entry point
     | - greet.js          // Hello World called by index.js
     | - sass              // Sass assets folder
     | - pug               // Pug (formerly jade) template and assets folder
| - node_modules
| - public                 // Production output folder
| - webpack-config-chunks  // Split up webpack configs folder
| - .babelrc 
| - package.json
| - webpack.config.js


Webpack.config.js

// Irrelevant parts omitted

const paths: {
  app:   path.join(__dirname, 'app'),    // The obvious one
  dev:   path.join(__dirname, 'bin'),
  /* As mentioned above, from my understanding,
     the output path for the dev server doesn't really matter at all
     when using html-webpack-plugin, am I wrong here? */
  build: path.join(__dirname, 'public')  // Another obvious one
  ...
};

...
entry: {
  app: production ? paths.app : [
    'webpack-dev-server/client?192.168.1.2:3000',
    'webpack/hot/only-dev-server',
     paths.app
  ]
  /* I can modify the entry to just be paths.app for every case
     but it won't change a thing regarding my problem. */
},

output: {
  path: production ? paths.build : paths.dev,
  publicPath: production ? '' : paths.dev + '/',
  /* ^ This is where I've tried just '' or paths.app or paths.build
       instead of paths.dev and delete publicPath all together. */
  filename: production ? '[name].[chunkhash].js' : '[name].js',
  chunkFilename: '[chunkhash].js'
},

devServer: {
  contentBase: paths.dev,
  /* ^ This = "webpack.test/bin" – See above.
       Tried several different paths here as well without luck. */
  hot: true,
  inline: true,
  stats: 'minimal',
  compress: true,
  host: '192.168.1.2',
  port: '3000',
},

plugins: [
  new HtmlWebpackPlugin(),
  new webpack.HotModuleReplacementPlugin(){
    multiStep: true
  }
]
...

【问题讨论】:

  • 您找到问题了吗?

标签: configuration webpack webpack-dev-server html-webpack-plugin hot-module-replacement


【解决方案1】:

如果您还没有,请尝试将您的命令放入 npm 脚本“start”。请注意,它是少数不需要“运行”的命令之一,因此“npm start”会运行该命令。

另外,如果你不介意全局安装 webpack,npm 可以使用 webpack 命令。

    npm install webpack -g

下面我使用全局 webpack 命令(运行文件),然后告诉 npm 监视我列出的文件的更改,运行 build 命令,启动 webpack-dev-server,然后在我想要的位置打开服务器位置。

    "scripts": {
     "build": "node-sass --output-style compressed src/css -o src/css",
     "start": "webpack --watch & webpack-dev-server --content-base dist --inline  & npm run build & open http://localhost:8080"
     },

请注意,我声明了 --content-base dist --inline。您在 webpack.config.js 文件中声明了它,因此您无需在 package.json 中再次声明它。目前我的 webpack.config 文件中没有任何 devServer 配置,一切仍然通过 npm 完美运行。

据我了解,npm 触发服务器,webpack.config.js 保存 webpack 命令的配置。

【讨论】:

    【解决方案2】:

    您可以尝试使用下一个变体:

    publicPath: production ? '' : '192.168.1.2:3000',
    

    Webpack Dev Server 生成的捆绑包不是物理上的散列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2020-03-24
      • 2016-01-24
      • 2018-03-14
      • 2020-05-23
      • 2018-05-18
      • 2017-09-08
      相关资源
      最近更新 更多