【问题标题】:Webpack-dev-server not bundling even after showing bundle valid message即使在显示捆绑有效消息后,Webpack-dev-server 也不捆绑
【发布时间】:2016-07-09 02:35:33
【问题描述】:

我已经使用 webpack 设置了一个基本的 react 应用程序,但我无法让 webpack-dev-server 正常运行。

我已经全局安装了webpack-dev-server,并尝试运行命令sudo webpack-dev-server --hot,因为需要热重载。

仅使用webpack cmd,该项目似乎运行良好。它构建到我的构建文件夹中,我可以通过一些服务器让它工作,但它不适用于webpack-dev-server。从终端可以清楚地看出构建过程已经完成,没有抛出任何错误 [webpack: bundle is now VALID.] 并且它实际上正在正确观察,因为在任何更改时它都会触发构建过程,但它并没有真正被构建 [它不服务我的 bundle.js]。我尝试更改整个配置,但仍然无法解决问题。

如果有人可以提供帮助,我们将不胜感激。

以下是我的 webpack.config.js 文件。

var path = require('path');

module.exports = {
    devtool: '#inline-source-map"',

    watch: true,
    colors: true,
    progress: true,

    module: {
        loaders: [{
            loader: "babel",
            include: [
                path.resolve(__dirname, "src"),
            ],
            test: /\.jsx?$/,
            query: {
                plugins: ['transform-runtime'],
                presets: ['es2015', 'react', 'stage-0'],
            }
        }, {
            loader: 'style!css!sass',
            include: path.join(__dirname, 'src'),
            test: /\.scss$/
        }]
    },

    plugins: [],
    output: {
        path: path.join(__dirname, 'build/js'),
        publicPath: '/build/',
        filename: '[name].js'
    },
    entry: {
        bundle: [
            './src/index.js'
        ]
    },

    devServer: {
        contentBase: "./",
        inline: true,
        port: 8080
    },
};

【问题讨论】:

    标签: javascript node.js reactjs webpack webpack-dev-server


    【解决方案1】:

    webpack-dev-server 从内存中为你的 bundle.js 提供服务。运行时它不会生成文件。所以 bundle.js 在这种情况下不作为文件存在。

    如果您不想使用 bundle.js,例如优化它的大小或测试您的生产部署,请使用 webpack 命令通过 webpack 生成它并在生产模式下提供它。

    【讨论】:

    • 嗨..谢谢您的回复..我知道文件不会生成。在我的情况下,它不是从内存中服务的,即我没有在我的本地主机上获得更新。
    • 在这种情况下,请仔细检查您的html中脚本标签中bundle.js的路径是否正确。
    • 是的,它是正确的,我相信这就是为什么我在做webpack 时让它工作的原因。 .就我而言,它是build/js/bundle.js
    【解决方案2】:

    我自己解决了这个问题。听起来很傻,但问题在于output 对象下的publicPath。它应该匹配path 属性,而不仅仅是/build/,即

    output: {
        path: path.join(__dirname, 'build/js'),
        publicPath: '/build/js', // instead of publicPath: '/build/' 
        filename: '[name].js'
    },
    

    【讨论】:

    • 谢谢!一直有同样的问题,没有 tuts 或 docs 提到这个!干杯!
    • 我可能会根据我所看到的添加,您的公共路径应该有一个尾部斜杠。当使用 Andre Evangelista 的回答中描述的技术时,我可以看到 webpack 开发服务器正在从 distmain.js 而不是 dist/main.js 提供我的 js 文件。
    • 是的,我很高兴这仍然对人们有所帮助。
    【解决方案3】:

    在我的例子中,我必须检查 webpack 在哪里提供文件。

    你可以看到它: http://localhost:8080/webpack-dev-server

    然后我可以看到我的 bundle.js 路径 > http://localhost:8080/dist/bundle.js

    之后我在 index.html 中使用了 /dist/bundle.js <script src="/dist/bundle.js"></script>

    现在它会刷新所有文件更改。

    【讨论】:

    • 谢谢,帮了大忙。
    • 我能够找出 karthik-rana 的答案因为这个答案。谢谢@andre-evangelista。并为答案 +1!
    • 非常感谢!!太好了,你帮我找到了问题! :)
    • 这实际上解释了它(+1)。我最终按照接受的答案建议更改了 publicPath,但它不需要匹配输出路径(我的不需要)。
    【解决方案4】:

    Dev-server 将编译后的文件保存在内存中,我无法直接访问它... 但!解决方案是您无需访问它,在开发中(即使您在节点服务器或本地主机上运行项目)使用 localhost:8080 访问您的页面,这就是 webpack-dev-server 为您的页面提供服务的地方可以感受到使用它的所有优势(实时重新加载!),但是!它不会编译你的 bundle.js,所以!在生产之前,你需要手动运行 webpack build 命令,就是这样! dev-server 无法编译您的 bundle.js 文件!祝你好运!

    【讨论】:

      【解决方案5】:

      就我而言,我使用的是 VS Code,我不得不重新启动它。我注意到有时会出现 vs 代码错误。您在配置文件(package.json、webpack.config.js 等)中所做的更改有时不会生效。因此,如果您遇到即使使用正确的设置也无法正常工作的情况,只需重新启动 vs 代码即可。

      我看不到任何与此相关的错误报告。所以这很奇怪。我认为如果您在多次构建项目之后更改其中一个配置文件,则会触发此错误。

      如果这确实是正在发生的事情,那么这是一个巨大的错误。我将尝试切换到 Visual Studio 而不是 Code,看看是否仍然会发生这种情况。如果是这样,那可能是 webpack 的问题。

      【讨论】:

        【解决方案6】:

        顺便说一句,从 Webpack v4 开始,可以将内存中的资产写入磁盘:

          devServer: {
            contentBase: "./",
            port: 8080,
            writeToDisk: true
          }
        

        doc

        【讨论】:

          【解决方案7】:

          请参考这个 - https://github.com/webpack/webpack-dev-server/issues/24 据此,webpack 开发服务器不再写入磁盘。因此,您将无法看到构建文件。相反,它将从内存中提供。要使其正常工作,您必须设置正确的路径。 示例:在 index.html 中从 '/dist/main.js' 加载构建文件,因此在 webpack 配置文件中将 output.publicPath 设置为 '/dist/'

          【讨论】:

          • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
          • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
          猜你喜欢
          • 2019-01-31
          • 2019-03-09
          • 1970-01-01
          • 2015-07-25
          • 2017-08-04
          • 2017-07-23
          • 1970-01-01
          • 2018-08-23
          • 2013-06-24
          相关资源
          最近更新 更多