Node.js (MERN) Обслуживание статических файлов и API - PullRequest
0 голосов
/ 02 ноября 2019

В настоящее время я создаю простое приложение, используя стек MERN для изучения. Что я сделал до сих пор:

  1. - Регистрация и вход пользователя (API)
  2. - Список TODO (API и интерфейс со статическими файлами)

ОК, Все работает хорошо и, как и ожидалось, за исключением одной вещи.

Я пытаюсь использовать свои API для любого запроса, но в то же время я хочу, чтобы все мое приложение работало с визуализацией в веб-браузере (список TODO),Итак, процесс, за которым я следовал:

  1. - запуск экземпляра узла
  2. -npm run build (для создания файлов реагирующего проекта)

Iпровел исследование о том, как использовать сборку React в проекте узла, и я сделал следующее:

app.use(express.static('myproject/build'));
app.get('/*', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'myproject', 'index.html'));
});

Хорошо! Поэтому, когда я перехожу на http://localhost:4000,, он обрабатывает мой индексный файл и фактически работает с моим API входа в систему, но у меня есть некоторые API, которые доступны только для использования данных и не рендеринга пользовательского интерфейса.

Итак,моя проблема заключается в том, что при запуске приложения, если я иду к: http://localhost:4000/api/users/getdata я получаю сообщение об ошибке: Ошибка: ENOENT: нет такого файла или каталога, указывающего index.html

Хорошо, если яраскомментируйте код, который я разместил ранее, тогда, конечно, мое приложение не отображает пользовательский интерфейс, но мои маршруты из API работают нормально.

Я знаю, что это может быть процесс установки / настройки, но я стараюсь изо всех сил, чтобы понять это. Если кто-то может помочь мне с этой проблемой, пожалуйста.

Иерархия, которую я работаю, выглядит следующим образом:

  • myproject (содержит модели, маршруты (API), промежуточное ПО, индекс. js)

    • внешний интерфейс (внутри папки «myproject») (build, src (Components))

1 Ответ

0 голосов
/ 02 ноября 2019

Я сделал то, что предложил @MaxAlex. Код изменен с

app.get('/*')

на

app.get('/')
...