当前位置: 首页 > 知识库问答 >
问题:

与Webpack Dev Server一起使用时,Webpack不会生成bundle

缑高朗
2023-03-14

我有一个webpack配置,当我直接调用webpack时,它会生成react包。由于我想合并热重新加载,所以我需要在端口3000上运行的development express服务器(服务APIendpoint)旁边运行webpack dev服务器

webpack.dev.config.js

const webpack = require('webpack');
const merge = require('webpack-merge');
const Jarvis = require('webpack-jarvis');
const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = merge({}, {
  mode: 'development',
  devtool: 'cheap-module-eval-source-map',
  output: {
    chunkFilename: '[name]-[hash].js',
    publicPath: "http://localhost:3000/build/",
    crossOriginLoading: 'anonymous'
  },
  optimization: {
    noEmitOnErrors: true,
    namedModules: true,
  },
  plugins: [
    new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
    new HtmlWebpackPlugin({
      inlineSource: '.(js|css)$',
      inject: 'head',
      filename: path.join(__dirname, "/dist/index.html"),
      template: path.join(__dirname, "/public/index.html"),
      chunks: ['common', 'main']
    }),
    new Jarvis({port: 7003}),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.DefinePlugin({
      _DEVELOPMENT_: true,
    })
  ],
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: { presets: ["es2015", "react", "stage-0"] }
        }
      },
      {
        test: /\.jsx$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: { presets: ["es2015", "react", "stage-0"] }
        }
      },
      {
        test: /\.scss$/,
        use: [
          "style-loader", // creates style nodes from JS strings
          "css-loader", // translates CSS into CommonJS
          "sass-loader" // compiles Sass to CSS, using Node Sass by default
        ]
      },
      {
        test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
        use: ["file-loader"]
      },
      {
        test: /\.svg$/,
        use: {
          loader: "svg-inline-loader"
        }
      },
      {
        test: /\.ts$/,
        use: [
          {
            loader: "ts-loader",
            options: {
              compilerOptions: {
                declaration: false,
                target: "es5",
                module: "commonjs"
              },
              transpileOnly: true
            }
          }
        ]
      }
    ]
  },
  resolve: {
    alias: {
      'react-dom': '@hot-loader/react-dom'
    }
  },
  entry: {
    main: [
      'babel-polyfill',
      'react-hot-loader/patch',
      'webpack/hot/only-dev-server',
      'webpack-dev-server/client?https://0.0.0.0:7001',
      './src/index.jsx',
    ],
  }
});

dev-server.js

const webpack = require('webpack');
const WebpackDevServer = require('webpack-dev-server');
const config = require('./webpack.dev.config');

new WebpackDevServer(webpack(config), {
  publicPath: config.output.publicPath,
  headers: {'Access-Control-Allow-Origin': '*'},
  hot: true,
  https: true,
  clientLogLevel: 'error',
  overlay: true,
  historyApiFallback: true,
  disableHostCheck: true,
  watchOptions: {
    ignored: /\/node_modules\/.*/,
  },
  stats: {
    assets: false,
    cached: false,
    cachedAssets: false,
    children: false,
    chunks: false,
    chunkModules: false,
    chunkOrigins: false,
    colors: true,
    depth: false,
    entrypoints: true,
    excludeAssets: /app\/assets/,
    hash: false,
    maxModules: 15,
    modules: false,
    performance: true,
    reasons: false,
    source: false,
    timings: true,
    version: false,
    warnings: true,
  },
}).listen(7001, '0.0.0.0', function(err, result) {
  console.log(`Serving chunks at path ${config.output.publicPath}`);
});

package.json脚本

 "scripts": {
    "build": "webpack --config webpack.dev.config.js --progress --profile --colors",
    "start-dev": "node dev-server.js",
    "build-prod": "webpack --config webpack.prod.js --progress --profile --colors",
    "start": "node server.js"
  },

如果我跑了

npm run build

结果是一个新的js包和html:dist/main . js dist/index . html

然而,理想的情况是运行

npm run start-dev

这将启动开发服务器,该输出即已成功构建捆绑包,但它们从未出现在我的文件系统中,因此必须有一个我在开发服务器中未正确设置的输出配置?

编辑

事实证明,问题如下面的帖子所述。为了访问实时捆绑包重新加载,我将捆绑包公共路径从“生产服务器”编辑回构建位置,然后从开发服务器访问页面,而不是由“生产服务器”提供的页面

output: {
    chunkFilename: '[name]-[hash].js',
    publicPath: "/build/",
    crossOriginLoading: 'anonymous',
    path: path.join(__dirname, "/dist"),
  },

共有1个答案

江衡
2023-03-14

Webpack开发服务器不会在每次更改源代码时将更改写入磁盘。相反,它监视您的文件更改、处理并从内存中提供服务。在这里查看详细说明。

 类似资料:
  • 我一直在纠结于一个遗留的Android应用程序,试图为其添加测试和适当的架构。该应用程序有一个主,它在启动时运行一系列检查。最初,activity使用Dagger很差劲地“注入依赖项”,activity将使用这些依赖项来运行检查。 我转向了MVVM,这样我就可以单独测试视图模型,而不需要检测,并且只需要为UI测试注入一个模拟视图模型。我跟随本文介绍了这些更改,包括切换到使用新的Dagger And

  • 问题内容: 我用Webpack和react-rounter构建一个项目。这是我的代码: 当我请求时,就可以了!但是地址有误。查看错误消息:在此处输入图片描述 我的WebpackDevServer配置为: 我不知道怎么回事,帮帮我! 问题答案: 您正在使用相对路径来描述index.html中bundle.js的路径。 您应该在index.html中为bundle.js使用绝对路径 绝对路径包含根目录

  • 我正在尝试让web workers启动并运行Vue cli3,但我遇到了麻烦,无法让它正常工作。 我想使用下面的包worker-loader(而不是vue-worker),因为它看起来维护得很好,而且有更多的贡献。 在他们的教程之后,我尝试使用vue cli修改webpack,如下所示: 我希望能和他们的相配 可以在这里阅读(https://github.com/webpack-contrib/w

  • 问题内容: 当我尝试将Webpack与简单的Express服务器一起使用时,总是会收到大量错误消息: express.js 我得到所有这些错误: 这是我的配置文件: 我该怎么办,我还需要在服务器端使用webpack。 我像这样运行express.js文件: 问题答案: 我最终要做的是,我使用了两种不同的配置,一种用于使用webpack将服务器内容打包在一起,另一种用于将所有浏览器内容打包在一起,并

  • 我想启动一个反序列化动态创建的类的流。这个Bean是使用反射和URLCLassLOader创建的,参数为给定的字符串类,但是KafkaStreams API不识别我的新类。 流与预创建的Beans完美配合,但使用动态Beans时会自动关闭。反倾销者是和杰克逊一起创造的,也是单独工作的。 下面是类解析器代码 首先,我实例化接收类作为参数的serde 然后启动使用此Serdes的流拓扑 流拓扑应该正常

  • 问题内容: 我正在通过GoDaddy设置SSL,以与AWS EC2上的node.js服务器一起使用。我一直无法启动它。 这是我尝试过的: 打算用于域:files.mysite.com 在服务器上,我运行: 然后,我得到CSR:vim files.mysite.csr 我从以下位置复制并粘贴: 最后还有一个空行,我使用rekey离开并粘贴到GoDaddy界面中。 然后,我下载godaddy密钥,该密