Open bidwolf opened 2 years ago
Realizei toda a implementação proposta no capítulo, porém, uma vez que estou utilizando o mesmo package.json para ambos os diretórios (Capítulo 2 e 3) tive que alterá-lo de forma a indicar o path do meadowlark.js corretamente. Segue a hierarquia dos arquivos abaixo e meu package.json:
{
"name": "curso_node",
"version": "1.0.0",
"description": "Curso node",
"main": "Capitulo_3/meadowlark.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon Capítulo_3/meadowlark.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Codelife-Compet/curso_node.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/Codelife-Compet/curso_node/issues"
},
"homepage": "https://github.com/Codelife-Compet/curso_node#readme",
"devDependencies": {
"nodemon": "^2.0.16"
},
"dependencies": {
"express": "^4.18.1",
"express-handlebars": "^6.0.6",
"express3-handlebars": "^0.5.2"
}
}
Após implementar os handlebars, o programa apresenta o seguinte erro quando executo "run dev":
Segue abaixo minha main (meadowlark.js)
var express = require('express');
var app = express();
//set up handlebars view engine
var handlebars = require('express3-handlebars')
.create({defaultLayout: 'main'});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('port', process.env.PORT || 3000);
app.use(express.static(__dirname + '/public'));
// app.get = adding routes
// app.get(path, function())
app.get('/', function(req, res){
res.render('home')
});
app.get('/about', function(req, res) {
res.render('about');
});
// custom 404 page (middleware)
app.use(function(req, res, next){
res.status(404);
res.render('404');
});
// custom 500 page (middleware)
app.use(function(err,req, res, next){
console.error(err.stack);
res.status(500);
res.render('500');
});
app.listen(app.get('port'), function(){
console.log('Express started on http://localhost:' +
app.get('port') + '; press Ctrl-C to terminate');
});
Francisco, esse erro é um erro comum no nodemon, ele é atribuido ao fato do nodemon utilizar como referência a pasta em que o terminal é executado, por exemplo, se caso você executar o mesmo comando, com o terminal sendo executado no diretório do capítulo_3, ele tentará acessar a pasta views e conseguirá acessá-la, pois ele tentará acessar o seguinte diretório:
root/Capitulo_3/views/meadowlark.js
Caso o terminal esteja simplesmente na raiz do projeto(root), o nodemon usara esse diretorio como base, entao ele tentara acessar simplesmente views no seguinte caminho:
root//views/meadowlark.js
Que não existe, e por isso é um erro
Simplesmente use o comando cd Capitulo_3
no terminal, e em seguida use o comando npm run dev
Se caso não solucionar, tenta colocar essa linha aqui no seu programa:
app.set('views', __dirname+'/views');
//dentro do arquivo meadowlark.js
Espaço para dúvidas
Essa issue é destinada para adicionar dúvidas em relação ao capítulo, ou solicitar ajuda para resolução de alguma tarefa relacionada ao repositório.
❤️ Todo mundo tem dúvidas ou precisa de ajuda então, basta comentar aqui! E quem puder ajudar é muito bem vindo para responder as duvidas dos membros :)