Я намереваюсь выполнить рендеринг на стороне сервера в ответ на обработчики событий, и я застрял в проблеме с получением файла 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 не загружается.