У Heroku такого файла или каталога нет, stat '/app/client/build/index.html' - PullRequest
0 голосов
/ 04 января 2019

Я боролся с этой ошибкой буквально почти три недели, и она, честно говоря, сводит меня с ума. Я использую Heroku для развертывания своих проектов уже более года, и у меня никогда не возникало никаких ошибок, пока я не собирался выпустить свой новый веб-сайт. Видите ли, в настоящее время в моем проекте узла установлен почтовый сервер, называемый index.js, а мой полный проект React находится в папке под названием client.

enter image description here Теперь вот что странно. Мой index.js выглядит так:

if (process.env.NODE_ENV === 'production') {
    app.use(express.static('client/build'));
    const path = require('path');
    app.get('*', (req, res) => {
      res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
    });
  }

Но каждый раз, когда я нажимаю на Heroku, в консоли появляется следующее сообщение об ошибке:

Error: ENOENT: no such file or directory, stat '/app/client/build/index.html'

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

Заранее спасибо.

Ответы [ 2 ]

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

Я просто столкнулся с той же проблемой. Вам нужно добавить скрипт heroku-postbuild в ваш package.json. Я использовал для своего проекта create-реакции-приложение, поэтому, если вы этого не сделаете, эта строка может немного отличаться:

"heroku-postbuild": "cd client && npm install --only=dev && npm install && npm run build"

Когда я запускаю npm run build, create-реагировать-приложение компилирует минимизированный файл index.html в папке build /, поэтому вам может потребоваться изменить команду, если файл сборки, на который вы указываете, находится в другом месте.

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

server.js
client/
  build/
  public/
    - index.html
  src/
    - index.js


Я нашел решение в этой удобной статье

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

Не используя Heroku, я думаю, проблема в '/app/client/build/index.html'.

Это действительно в / app /? Возможно, вам следует использовать относительный путь, например:

app/client/build/index.html
...