Обслуживание приложения Create-React-App с помощью модуля маршрутизатора Node / Express - PullRequest
0 голосов
/ 25 января 2019

Я довольно новичок в 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 (не найдено)

Я не уверен, как указать CRA, что статический каталог и все связанные файлы сборки должны находиться в каталоге "build /".Поэтому вместо этого я перемещаю статическую папку за пределы каталога сборки в корневой каталог.Файловая структура теперь выглядит следующим образом:

controllers/
build/
static/
app.js
package.json

Когда я снова пробую маршрут, я все еще получаю ту же ошибку.Теперь я немного озадачен тем, как работает файловая структура Node.Если app.js находится в корневом каталоге, не будет ли localhost: 3001 / static / просто моей папкой static/?Почему приложение CRA не может найти эту папку?

1 Ответ

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

Я считаю, что вы ищете static.

https://expressjs.com/en/4x/api.html#express.static

Вам нужно что-то вроде

var express = require('express');
var app = express();
app.use(express.static('static'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...