Olá, estou fazendo uma aplicação em nodejs para um trabalho da faculdade mas estou me deparando com um “erro” muito estranho. Eu simplesmente não consigo acessar meu http://localhost:3000/, e o pior é que não aparece nada de errado no terminal. Segue o código:
routes.js
const express = require('express')
const router = express.Router()
const { logginRequired } = require('../config/auth')
const pool = require('../config/db')
// rota principal
router.get('/', (req, res) => res.render('home'))
// rota de cadastro
router.post('/register', (req, res) => {
pool.getConnection((err, connection) => {
if (err) throw err
const { name, email, password } = req.body
let errors = []
if (!name || !email || !password) errors.push('Preencha todos os campos!')
if (password.length < 5) errors.push('A senha precisa ter pelo menos 5 caracteres!')
if (errors.length > 0) {
req.flash('errors', errors)
return res.redirect('/')
}
connection.query('SELECT * FROM users WHERE email=?', [email], (err, rows) => {
connection.release()
if (err) {
errors.push('Usuario ja cadastrado!')
req.flash('errors', errors)
return res.redirect('/')
}
})
connection.query('INSERT INTO users SET name=?, email=?, password=?', [name, email, password], (err, rows) => {
connection.release()
if (err) throw err
return res.redirect('/')
})
})
})
// rota de login
router.post('/login', (req, res) => {
pool.getConnection((err, connection) => {
const { email, password } = req.body
let errors = []
if (!email || !password) {
errors.push('Preencha todos os campos!')
req.flash('errors', errors)
return res.redirect('/')
}
connection.query('SELECT * FROM users WHERE email = ? AND password = ?', [email, password], (err, rows) => {
connection.release()
if (rows.length > 0) {
req.session.userID = rows[0].id,
req.session.user = rows[0],
res.redirect('/user')
} else {
errors.push('Email e/ou senha incorretos!')
req.flash('errors', errors)
return res.redirect('/')
}
})
})
})
// rota de logout
router.get('/logout', (req, res) => {
req.session.destroy()
return res.redirect('/')
})
// rota do usuario
router.get('/user', logginRequired, (req, res) => {
pool.getConnection((err, connection) => {
const user_id = req.session.user.id
connection.query('SELECT * FROM posts WHERE user_id=?', [user_id], (err, rows) => {
connection.release()
if (rows.length > 0) {
const story = rows
res.render('userPage', { data: story })
} else {
const msg = 'POXA, Parece que você ainda não tem nenhuma história :('
res.render('userPage', { msg: msg })
}
})
})
})
// rota de publicação get
router.get('/user/write', logginRequired, (req, res) => res.render('write'))
// rota de publicação post
router.post('/user/write', logginRequired, (req, res) => {
pool.getConnection((err, connection) => {
const { title, status, body } = req.body
const user_name = req.session.user.name
if(!title || !status || !body) {
errors.push('Preencha todos os campos!')
req.flash('errors', errors)
return res.redirect('/user/write')
} else {
connection.query('INSERT INTO posts SET title=?, status=?, body=?, user_id=?, user_name=?', [title, status, body, user_id, user_name], (err, rows) => {
connection.release()
if(err) throw err
return res.redirect('/user')
})
}
})
})
// rota de todoas a publicações
router.get('/user/stories', (req, res) => {
pool.getConnection((err, connection) => {
connection.query('SELECT * FROM posts', (err, rows) => {
connection.release()
if (rows.length > 0) {
const stories = rows
res.render('stories', { data: stories })
} else {
res.render('stories')
}
})
})
})
// rota para remover historias
router.delete('/story/:id', (req, res) => {
const storyId = req.params.id
pool.getConnection((err, connection) => {
connection.query('DELETE FROM posts WHERE id=?', [storyId], (err, rows) => {
connection.release()
if (err) throw err
res.redirect('back')
})
})
})
// rota para editar história get
router.get('/user/story/edit/:id', (req, res) => {
const storyId = req.params.id
pool.getConnection((err, connection) => {
connection.query('SELECT id, title, status, body FROM posts WHERE id=?', [storyId], (err, rows) => {
connection.release()
if (rows.length > 0) {
res.render('edit', { data: results[0] })
} else {
res.send('404')
}
})
})
})
// rota para editar história put
router.put('/user/story/edit/:id', (req, res) => {
const storyId = req.params.id
const { title, status, body } = req.body
pool.getConnection((err, connection) => {
connection.query('UPDATE posts SET title=?, status=?, body=? WHERE id=?',[title, status, body, storyId], (err, rows) => {
connection.release()
if (err) throw err
req.flash('success', 'História atualizado com sucesso!')
return res.redirect('/user/stories')
})
})
})
// rota de história única
router.get('/user/singleStory/:id', (req, res) => {
const storyId = req.params.id
pool.getConnection((err, connection) => {
connection.query('SELECT * FROM posts WHERE id=?', [storyId], (err, rows) => {
connection.release()
if (rows.length > 0) {
res.render('singleStory', { data: results[0] })
} else {
res.send('404')
}
})
})
})
// rota de pesquisar de história
router.get('/search', (req, res) => {
const { title } = req.query
pool.getConnection((err, connection) => {
connection.query('SELECT * FROM posts WHERE title LIKE "%' + title + '%"', (err, rows) => {
connection.release()
if (rows.length > 0) {
const stories = results
res.render('find', { data: stories })
} else {
req.flash('errors', 'A história pesquisada não existe')
res.render('find')
}
})
})
})
module.exports = router
app.js
require('dotenv').config()
const express = require('express')
const session = require('express-session')
const MySQLStore = require('express-mysql-session')(session);
const flash = require('connect-flash')
const path = require('path')
const routes = require('./src/routes/routes')
const { globals } = require('./src/middleware/middleware')
const methodOverride = require('method-override')
const app = express()
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(methodOverride(function (req, res) {
if (req.body && typeof req.body === 'object' && '_method' in req.body) {
// look in urlencoded POST bodies and delete it
var method = req.body._method
delete req.body._method
return method
}
}))
app.set('views', path.resolve(__dirname, 'src', 'views'));
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, '/public')))
app.use(session({
secret: process.env.SECRET,
resave: false,
saveUninitialized: false,
cookie: { maxAge: 24 * 60 * 60 * 1000 },
store: new MySQLStore({
host: process.env.HOST,
port: process.env.PORTDB,
user: process.env.USER,
password: process.env.PASSWORD,
database: process.env.DB
})
}))
app.use(flash())
app.use(globals)
app.use(routes)
const PORT = 5000
app.listen(PORT, () => console.log(`Running on port ${PORT}`))
db.js
const mysql = require('mysql')
const pool = mysql.createPool({
connectionLimit: 100,
host: process.env.HOST,
user: process.env.USER,
password: process.env.PASSWORD,
database: process.env.DB
})
module.exports = pool
Isso é o que aparece na minha tela quando tento acessar a rota principal:
E o curioso é que eu tenho um projeto semelhante rodando com node e mongobd funcionando normalmente.
