Не удалось найти представление "home / index" в каталоге представлений "/ app / views" - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь опубликовать свой проект на heroku, чтобы он работал в облаке. Локально он работает на порту 5000, и я могу получить каждый вид. Когда я загружаю его в heroku, я получаю следующую ошибку при попытке перейти на домашнюю страницу: Не удалось найти представление "home / index" в каталоге представлений "/ app / views"

Я уже пытался сделать следующее:

app.set('views', __dirname + '/views');
app.set('view engine', 'ejs'); // set up ejs for templating

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

Мой маршрут выглядит так:

  • вид / дом / index.ejs

Код, который ищет файл:

        app.get('/', function (req, res) {
            res.render('home/index.ejs'); // load the index.ejs file
        });

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

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Это потому, что Heroku не может найти подпапку home внутри папки views.Это очень вероятно, потому что вы могли написать папку как «Домой» вместо «дома».Чтобы выяснить это, сделайте heroku run bash и затем запустите ls.Это выведет список папок внутри папки / app.Попав в рабочий каталог, вы должны увидеть папку views.сделайте cd views и у вас будет список всех папок.Там вы должны найти папку home.Если вы обнаружите Views вместо views или Home вместо или вообще не home, то именно в этом и заключается ошибка, поскольку в heroku пути к папкам и файлам чувствительны к регистру (в локальных нети именно поэтому вы не столкнетесь с той же ошибкой в ​​локальном порту 5000).

После того, как вы исправите имена папок и файлов в соответствующем регистре, нажмите Heroku, и оно должно работать.Также будьте осторожны, чтобы проверить снова, чтобы увидеть, работает ли heroku run bash, и работает ли cd home.Если этого не произойдет, то вам нужно удалить папку home, вставить ее в Heroku, а затем снова вставить папку home и выполнить загрузку (из-за кеша), после чего она должна работать.

0 голосов
/ 09 апреля 2019

вы пробовали app-module-path?

const path = require('path');
require('app-module-path').addPath(path.join(__dirname, '../'));


I do not possess any experience with Heroku but the error seems to be related with a 
path problem like assuming there is a different directory level.
I would try to debug it on the render method and then go for a module solution.

Например

app.get('/', function (req, res) {
    res.render('../home/index.ejs'); // load the index.ejs file
}); 
...