Я играю с React + SSR + HMR + Webpack, сейчас мое решение состоит из 3 различных пакетов:
- poc-build - содержит всеконфигурация webpack (и сервер, и клиент)
- poc-frame-client - содержит 2 файла js "src / entry.js" и "src / app.js"
- poc-frame-server - использует экспресс, он вызывает App.js из poc-frame-client
Мой клиент прекрасно собирается, однако мой сервер не включает "Файл poc-frame-client / src / app.js "внутри пакета, он помечается как" внешний ".Кроме того, всякий раз, когда я пытаюсь запустить свой сервер, он говорит следующее:
C:\(...)\repos\poc-modular\poc-frame-server\node_modules\poc-frame-client\src\app.js:1
(function (exports, require, module, __filename, __dirname) { import React from "react";
^^^^^
SyntaxError: Unexpected identifier
Сервер Webpack вывод:
/***/ "poc-frame-client/src/app":
/*!*******************************************!*\
!*** external "poc-frame-client/src/app" ***!
\*******************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"poc-frame-client/src/app\");\n\n//# sourceURL=webpack:///external_%22poc-frame-client/src/app%22?");
Как видите, вместо включениявесь файл app.js
в моем server.js
веб-пакете просто помечает его как external
.
Я попытался добавить include
в мое babel-loader
правило:
const getBabelLoader = (paths) => ({
test: /\.(js|jsx)$/,
include: [
paths.srcClient,
paths.srcServer,
],
exclude: /(node_modules[\\/](?!poc-))/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env", "@babel/preset-react"],
plugins: [
"@babel/plugin-syntax-dynamic-import",
["babel-plugin-root-import", {
paths: [
{ "rootPathSuffix": "src", "rootPathPrefix": "#" }
]
}],
["@babel/plugin-proposal-object-rest-spread", { "useBuiltIns": true }],
["@babel/plugin-proposal-class-properties", { "loose": true }],
"@babel/plugin-transform-object-assign",
["transform-react-remove-prop-types", { "mode": "wrap" }],
"react-hot-loader/babel"
]
}
}
});
Я также добавил путь к модулю в веб-пакете resolve.modules
.
Есть идеи, почему он не включает файл в комплект сервера?