web-dev-qa-db-ja.com

オンデマンドで初期チャンクをロードすることはできません。チャンク名「main」は、エントリーポイントですでに使用されています

私はサーバー側の反応ノードプロジェクトでwebpackを使用しています。コンソールでエラーが多すぎて、昨日からわからなかった。私は誰かが時間を費やして私を助けてくれることを願っています。これが最後のエラーです:

ERROR in ./src lazy ^\.\/.*$ namespace object ./main
    It's not allowed to load an initial chunk on demand. The chunk name "main" is already used by an entrypoint.

主な問題は、ノードのあるWebpackです。 enter image description here

サーバーのセットアップは次のとおりです。

import express from "express";
const server = express();
import path from "path";
// const expressStaticGzip = require("express-static-gzip");
import expressStaticGzip from "express-static-gzip";
import webpack from "webpack";
import webpackHotServerMiddleware from "webpack-hot-server-middleware";

import configDevClient from "../../config/webpack.dev-client";
import configDevServer from "../../config/webpack.dev-server.js";
import configProdClient from "../../config/webpack.prod-client.js";
import configProdServer from "../../config/webpack.prod-server.js";

const isProd = process.env.NODE_ENV === "production";
const isDev = !isProd;
const PORT = process.env.PORT || 8000;
let isBuilt = false;

const done = () => {
  !isBuilt &&
    server.listen(PORT, () => {
      isBuilt = true;
      console.log(
        `Server listening on http://localhost:${PORT} in ${process.env.NODE_ENV}`
      );
    });
};

if (isDev) {
  const compiler = webpack([configDevClient, configDevServer]);

  const clientCompiler = compiler.compilers[0];
  const serverCompiler = compiler.compilers[1];

  const webpackDevMiddleware = require("webpack-dev-middleware")(
    compiler,
    configDevClient.devServer
  );

  const webpackHotMiddlware = require("webpack-hot-middleware")(
    clientCompiler,
    configDevClient.devServer
  );

  server.use(webpackDevMiddleware);
  server.use(webpackHotMiddlware);
  server.use(webpackHotServerMiddleware(compiler));
  console.log("Middleware enabled");
  done();
} else {
  webpack([configProdClient, configProdServer]).run((err, stats) => {
    const clientStats = stats.toJson().children[0];
    const render = require("../../build/prod-server-bundle.js").default;
    server.use(
      expressStaticGzip("dist", {
        enableBrotli: true
      })
    );
    server.use(render({ clientStats }));
    done();
  });
}

これがレポです

7
Yilmaz

src/main.jsの名前をsrc/index.jsなどの別の名前に変更することで、前述の問題を回避する必要があります。 webpack configのエントリポイントも更新してください:

main: [
    ...
    "./src/index.js"
]

コードを詳しく調べなかったため、何が原因であるかはわかりませんが、エラーログに基づいて、生成されたチャンクに名前の競合があるようです。

エントリーポイントを修正した後にポップアップする他の問題もあります。たとえば、Web環境をターゲットにしながら、ノードバイナリを含むいくつかのパッケージを使用しているようです。たとえば、iltorbは、BrotliPluginの依存関係です。

0
kaveh