Вот что я пытаюсь сделать:
- / api / * обрабатывается Express.js
- все остальное обрабатывается в React Router Dom
Я создал свое приложение, используя create-Reaction-app, и извлек его. По какой-то причине мой экспресс-сервер не работает должным образом:
const express = require("express");
const path = require("path");
const port = 3000;
const app = express();
app.get("*", (req, res) => {
res.status(200).sendFile(path.resolve(path.join(__dirname, "../build/index.html")));
});
Когда я выполняю yarn build
(который по умолчанию node scripts/build.js
поставляется с create-реагировать-app), он создает мое приложение, затем я запускаю экспресс-сервер и перехожу на него, и на консоли появляется пустая страница с консолью. вывод:
Ресурс интерпретируется как таблица стилей, но передается с текстом MIME типа / html: "http://localhost:3000/static/css/main.766345d1.css".
main.936d1f48.js: 1 Uncaught SyntaxError: Неожиданный токен <</p>
Это происходит, когда мое свойство homepage
не установлено в package.json
.
Когда я устанавливаю его на ./
, это происходит:
Ресурс интерпретируется как таблица стилей, но передается с типом MIME.
text / html: "http://localhost:3000/static/css/main.766345d1.css".
manifest.json: 1 Манифест: строка: 1, столбец: 1, неожиданный токен.
main.5e4ef579.js: 1 Uncaught SyntaxError: Неожиданный токен <</p>
Очевидно, что любой вызов перенаправлен на возврат index.html
. Что я могу сделать?
Pst. Я новичок в реакции-роутере и особенно в express.js.
РЕДАКТИРОВАТЬ: Если это поможет, вот моя build
структура каталогов:
Также обратите внимание, что я запускаю приложение, собирая, а затем просто запускаю экспресс-сервер, хотя я не уверен, что так оно и должно быть.