gpt4 book ai didi

configuration - webpack-dev-server 404 & 如何正确设置?

转载 作者:行者123 更新时间:2023-12-04 21:08:53 25 4
gpt4 key购买 nike

我来自哪里

我使用 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(无法获取/)
现在我已经阅读了 很多 关于如何正确设置 webpack 开发服务器,但我仍然没有做对......(很可能不是唯一在这里......)因为我仍然没有完全理解路径是如何工作的。

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

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

  • 我的 webpack.config.js 的输出路径只会在运行开发服务器时在内存中提供,因此在物理上不可见(例如,如果输出是 path: path.join(__dirname, 'devServerFolder',我将永远不会在我的项目结构中的任何地方看到该文件夹如果不是我创造的)
  • 一个指向我的 index.html 的静态 bundle.js 将需要在我用 publicPathcontentBase 指向的文件夹中(这可能是我需要创建的 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
    }
    ]
    ...

    最佳答案

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

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

        npm install webpack -g

    下面我使用全局 webpack 命令(运行文件),然后告诉 npm 查看我列出的文件的更改,运行构建命令,启动 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 命令的配置。

    关于configuration - webpack-dev-server 404 & 如何正确设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39260162/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com