powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Серверный JavaScript (Node.js, Ringo, Nitro, Sling) [игнор отключен] [закрыт для гостей] / Node.js + Express + Handlebars где ошибка
8 сообщений из 8, страница 1 из 1
Node.js + Express + Handlebars где ошибка
    #39921360
Фотография 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.
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
Node.js + Express + Handlebars где ошибка
    #39921433
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил так
Код: 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
Node.js + Express + Handlebars где ошибка
    #39921592
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,

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

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

На гитхаб засунь весь свой проект или хотя бы в архив и сюда.
...
Рейтинг: 0 / 0
Node.js + Express + Handlebars где ошибка
    #39922846
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
...
Рейтинг: 0 / 0
Node.js + Express + Handlebars где ошибка
    #39923173
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Node.js + Express + Handlebars где ошибка
    #39924284
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

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


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