Гость
Форумы / Серверный JavaScript (Node.js, Ringo, Nitro, Sling) [игнор отключен] [закрыт для гостей] / Node.js + Express + Handlebars где ошибка / 8 сообщений из 8, страница 1 из 1
01.02.2020, 20:04
    #39921360
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
Начал осваивать Node.js + Express

в качестве шаблонизатора выбрал Handlebars(как в учебнике)

Вот код:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
var express = require('express');

var app = express();
var handlebars = require('express-handlebars')
    .create({defaultLayout:'main'});


app.set('port', process.env.PORT || 3000);
app.engine('handlebars', handlebars.engine)
app.set('view engine', 'handlebars')

app.get('/', function(req, res){
    res.render('home')
   // res.type('text/plain');
   // res.send('startPage | Main Page');
});

app.get('/about', function(req, res){
    res.type('text/plain');
    res.send('startPage | About Page');
});

app.use(function(req, res){
    res.type('text/plain');
    res.status(404);
    res.send('404 - Not Found!')
});

app.use(function(err, req, res, next){
    console.error(err.stack);
    res.type('text/plain');
    res.status(500);
    res.send('500 - Server Error');
});

app.listen(app.get('port'), function(){
    console.log('Express is running on http://localhost '+app.get('port')+' press Ctrl+C to exit.')
});



Пока выводил просто текст всё было норм
Попытался вывести шалон:
Код: javascript
1.
2.
3.
4.
5.
app.get('/', function(req, res){
    res.render('home')
   // res.type('text/plain');
   // res.send('startPage | Main Page');
}



получаю ошибки:
авторError: Failed to lookup view "home" in views directory "C:\Workspace\Node\Express\views"
at Function.render (C:\Workspace\Node\Express\node_modules\express\lib\application.js:580:17)
at ServerResponse.render (C:\Workspace\Node\Express\node_modules\express\lib\response.js:1012:7)
at C:\Workspace\Node\Express\startpage.js:13:9
at Layer.handle [as handle_request] (C:\Workspace\Node\Express\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Workspace\Node\Express\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Workspace\Node\Express\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Workspace\Node\Express\node_modules\express\lib\router\layer.js:95:5)
at C:\Workspace\Node\Express\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Workspace\Node\Express\node_modules\express\lib\router\index.js:335:12)
at next (C:\Workspace\Node\Express\node_modules\express\lib\router\index.js:275:10)
at Function.render (C:\Workspace\Node\Express\node_modules\express\lib\application.js:580:17)
at ServerResponse.render (C:\Workspace\Node\Express\node_modules\express\lib\response.js:1012:7)
at C:\Workspace\Node\Express\startpage.js:13:9
at Layer.handle [as handle_request] (C:\Workspace\Node\Express\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Workspace\Node\Express\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Workspace\Node\Express\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Workspace\Node\Express\node_modules\express\lib\router\layer.js:95:5)
at C:\Workspace\Node\Express\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Workspace\Node\Express\node_modules\express\lib\router\index.js:335:12)
at next (C:\Workspace\Node\Express\node_modules\express\lib\router\index.js:275:10)

Тоесть не может найти шаблон.
Шиблоны лежат в папке views/layout
404.handlebars
500.handlebars
about.handlebars
home.handlebars
main.handlebars

что я делаю не так?
...
Рейтинг: 0 / 0
02.02.2020, 11:42
    #39921433
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
Исправил так
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
var express = require('express');
 
var app = express();
var handlebars = require('express-handlebars')
    .create({defaultLayout:'main'});
 
 
app.set('port', process.env.PORT || 3000);
app.engine('handlebars', handlebars.engine)
app.set('view engine', 'handlebars')
app.set("views", "views/layouts");
 
 
app.get('/', function(req, res){
    res.render('home');
});
 
app.get('/about', function(req, res){
    res.render('about')
});



app.use(function(req, res){
res.type('text/plain');
res.status(404);
res.send('404 - Not Found!')
});

app.use(function(err, req, res, next){
console.error(err.stack);
res.type('text/plain');
res.status(500);
res.send('500 - Server Error');
});

app.listen(app.get('port'), function(){
console.log('Express is running on http://localhost '+app.get('port')+' press Ctrl+C to exit.')
});

Старая ошибка исчезла. но полочаю
авторError: ENOENT: no such file or directory, open 'C:\Workspace\Node\Express\views\layouts\layouts\main.handlebars'
откуда взялся второй \layouts в коде этого нет??
...
Рейтинг: 0 / 0
03.02.2020, 05:14
    #39921592
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
Areostar,

Что ты пристал к нему? Положи вьюхи в тот каталог, который он хочет.
'C:\Workspace\Node\Express\views\layouts\layouts
...
Рейтинг: 0 / 0
05.02.2020, 12:32
    #39922770
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
crutchmaster,

Так они там и лежат (((
...
Рейтинг: 0 / 0
05.02.2020, 12:46
    #39922785
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
Areostar,

На гитхаб засунь весь свой проект или хотя бы в архив и сюда.
...
Рейтинг: 0 / 0
05.02.2020, 14:03
    #39922846
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
crutchmaster,
...
Рейтинг: 0 / 0
06.02.2020, 06:14
    #39923173
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
Areostar,

Расширение должно быть .handlebars
Файлы должны лежать в view/ и view/layouts
См. документацию https://www.npmjs.com/package/express-handlebars
Можно поменять расширение:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
var express = require('express');
var exphbs  = require('express-handlebars');

var app = express();

app.engine('.hbs', exphbs({extname: '.hbs'}));
app.set('view engine', '.hbs');
...
Рейтинг: 0 / 0
08.02.2020, 21:09
    #39924284
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Node.js + Express + Handlebars где ошибка
crutchmaster,

Спасибо за совет
...
Рейтинг: 0 / 0
Форумы / Серверный JavaScript (Node.js, Ringo, Nitro, Sling) [игнор отключен] [закрыт для гостей] / Node.js + Express + Handlebars где ошибка / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]