私はサーバー側の反応ノードプロジェクトで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.
サーバーのセットアップは次のとおりです。
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();
});
}
src/main.js
の名前をsrc/index.js
などの別の名前に変更することで、前述の問題を回避する必要があります。 webpack configのエントリポイントも更新してください:
main: [
...
"./src/index.js"
]
コードを詳しく調べなかったため、何が原因であるかはわかりませんが、エラーログに基づいて、生成されたチャンクに名前の競合があるようです。
エントリーポイントを修正した後にポップアップする他の問題もあります。たとえば、Web環境をターゲットにしながら、ノードバイナリを含むいくつかのパッケージを使用しているようです。たとえば、iltorb
は、BrotliPlugin
の依存関係です。