Codelife-Compet / curso_node

Curso node
MIT License
1 stars 0 forks source link

Duvidas #7

Open bidwolf opened 2 years ago

bidwolf commented 2 years ago

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 :)

Essa issue sempre é fechada quando iniciamos um novo capítulo.

Francis1408 commented 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:

Screenshot from 2022-06-08 12-58-42

{
    "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":

Screenshot from 2022-06-08 13-03-29

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');

});
bidwolf commented 2 years ago

Comentando

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

Solucinando

Simplesmente use o comando cd Capitulo_3 no terminal, e em seguida use o comando npm run dev

bidwolf commented 2 years ago

Se caso não solucionar, tenta colocar essa linha aqui no seu programa:

app.set('views', __dirname+'/views');
//dentro do arquivo meadowlark.js