Файл Webpack не входит в комплект сервера (React, Express, SSR) - PullRequest
0 голосов
/ 01 марта 2019

Я играю с React + SSR + HMR + Webpack, сейчас мое решение состоит из 3 различных пакетов:

  1. poc-build - содержит всеконфигурация webpack (и сервер, и клиент)
  2. poc-frame-client - содержит 2 файла js "src / entry.js" и "src / app.js"
  3. 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.

Есть идеи, почему он не включает файл в комплект сервера?

...