Je travaille sur un projet de nœud de réaction côté serveur avec le webpack. J'ai eu trop d'erreurs sur la console que je n'ai pas pu comprendre depuis hier. J'espère que quelqu'un passe du temps et m'aide. c'est la dernière erreur:
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.
le problème principal est un peu le webpack avec node.
voici le serveur mis en place:
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();
});
}
Vous devriez résoudre le problème mentionné en renommant src/main.js
à autre chose, comme src/index.js
. Assurez-vous également de mettre à jour les points d'entrée dans la configuration du pack Web:
main: [
...
"./src/index.js"
]
Je n'ai pas beaucoup regardé dans le code et je ne suis pas sûr de la cause de cela, mais d'après le journal des erreurs, il semble qu'il y ait un conflit de nom dans les morceaux générés.
Il y a également d'autres problèmes qui surgissent après la correction du point d'entrée. Par exemple, il semble que vous utilisiez des packages avec un nœud binaire tout en ciblant un environnement Web. Un exemple est iltorb
, qui est une dépendance de BrotliPlugin
.