Я новичок в CRA и обычно использую обычный React с Webpack. Я пытаюсь обслуживать свой CRA так же, как и любые другие приложения React. Моя файловая структура корневого каталога в настоящее время выглядит примерно так:
controllers/
build/
app.js
package.json
Где «app.js» — мой сервер Node/Express, build/ — папка сборки для моего приложения CRA (здесь находятся index.hmtl, статический каталог, манифест и т. д.), а controllers/ — файлы моего маршрутизатора. Файл маршрутизатора, который я должен обслуживать, называется «staticController.js» и находится в каталоге controllers/ и выглядит следующим образом:
const express = require("express");
const path = require("path");
const router = express.Router();
router.get("/client/static/home", (req, res) => {
res.sendFile(path.join(__dirname, ".." , "/build/index.html"));
})
module.exports = router;
Я импортирую этот модуль маршрутизатора в app.js, чтобы использовать его, и запускаю маршрутизатор на порту 3001. Когда я перехожу к localhost:3001/client/static/home, я получаю пустую страницу и сообщение об ошибке:
GET http://localhost:3001/static/css/1.1ee5c864.chunk.css net::ERR_ABORTED 404 (Not Found)
Я не уверен, как указать CRA, что статический каталог и все связанные файлы сборки должны находиться в каталоге «build/». Поэтому вместо этого я перемещаю статическую папку за пределы каталога сборки в корневой каталог. Структура файла теперь выглядит так:
controllers/
build/
static/
app.js
package.json
Когда я снова пытаюсь пройти маршрут, я все равно получаю ту же ошибку. Теперь я немного запутался в том, как работает файловая структура Node. Если app.js находится в корневом каталоге, не будет ли localhost:3001/static/ просто моей папкой static/? Почему приложение CRA не может найти эту папку?





Я считаю, что вы ищете static.
https://expressjs.com/en/4x/api.html#express.static
Вам нужно что-то вроде
var express = require('express');
var app = express();
app.use(express.static('static'));
использовать
express.static
для обслуживания папки сборки (или любых статических файлов)
например : здесь я обслуживаю папку сборки по корневому пути (при условии, что она находится в том же каталоге, что и файл сервера)
app.use('/', express.static('build'));