Не удается найти статическую папку в экспресс-связке через веб-пакет (SSR) - PullRequest
0 голосов
/ 04 января 2019

Я намереваюсь выполнить рендеринг на стороне сервера в ответ на обработчики событий, и я застрял в проблеме с получением файла index.js на локальном экспресс-сервере.Попытался найти несколько других ответов здесь, но я не могу обдумать это.

Вот код.

import express from "express";
import React from "react";
import { renderToString } from "react-dom/server";
import App from "./app/home/app";
import path from "path";
import fs from "fs";

let server = port => {
  const app = express();

  app.use('/js', express.static(path.resolve('/static')));
  console.log(path.resolve('/static'));
  console.log(path.join(__dirname, '/static'));
  console.log(fs.existsSync(path.resolve('/static')));

  app.get("/", (req, res) => {
    res.status(200).send(renderMarkup(renderToString(<App />)));
  });

  app.get("/ping", (req, res) => {
    res.status(200).send("HELLO!");
  });

  app.listen(port, () => console.log("Server Ready!"));
}

let renderMarkup = html => {
  return `
    <!DOCTYPE html>
    <html>
        <head>
            <title>Webpack SSR Demo</title>
            <meta charset="utf-8" />
        </head>
        <body>
            <div id="app">${html}</div>
            <script src="/js/index.js"></script>
        </body>
    </html>
 `;
}

server(process.env.PORT || 8080);

Я попытался войти, если мой статический каталог существует.Он возвращает ложь, хотя, когда я проверяю свою папку сборки (выходной каталог пакета веб-пакета. Он существует).

Моя папка с папками сборки описана ниже (будьте уверены, все пакеты js собраны успешно):

build
|- static
|-- index.js
|- server.js

TLDR: представление успешно отрисовано.События не работают, потому что клиентский JavaScript не загружается.

1 Ответ

0 голосов
/ 04 января 2019

После прочтения множества вопросов, проблем с github и чтения js.

Это не было проблемой с кодом сервера.См .: https://github.com/webpack/webpack/issues/1599

Мне нужно было добавить это в мой webpack.server.js:

node: {
  __dirname: false,
},
...