【问题标题】:Node JS Server run but don't work, what i can do?Node JS 服务器运行但不工作,我能做什么?
【发布时间】:2021-10-07 08:25:55
【问题描述】:

我正在使用 React JS、Node JS(Express、Express-session、cookieParser、bodyParser、express-vaidator、pg、bcrypt 和 cors)和 PostgresSQL 创建一个登录系统,但我的节点 js 服务器运行但没有响应。服务器控制台上没有打印错误!

这是我的 Node JS 代码:

var http = require('http') // Importa a biblioteca http
const express = require('express'); //Importa a biblioteca express
const session = require('express-session'); //Importa a biblioteca express
const cookieParser = require('cookie-parser'); //Importa a biblioteca express
const bodyParser = require('body-parser'); //Importa a biblioteca express
const { body, validationResult } = require('express-validator')
const { Pool } = require('pg') //Importa o gerenciador de coneção ao Postgress
const bcrypt = require('bcrypt')
const cors = require("cors")

const app = express(); //Inicializa um app express
app.use(express.json());
app.use(
    cors()
);
app.use(cookieParser)
app.use(bodyParser.urlencoded({ extended: true })); 

app.use(
    session({
        key: "userId",
        secret: "subscribe",
        resave: false,
        saveUninitialized: false,
        cookie: {
        expires: 60 * 60 * 24,
        },
    })
);

const pool = new Pool({ //Cria o gerenciador passando como parametro um objeto com as configurações necessárias
    host: 'localhost',
    user: 'postgres',
    password: 'root',
    database: 'testOnfinity',
    post: 5334
})

function loginUser(email, senha, callback) { //Função responsável de verificar se o usuário pode executar o login
    console.log('Conectando...')
    pool.connect((error, client, release) => {
        if (error) { //Se houver erro na conexão retorna o erro completo
            return console.error('Erro na conexão: ', error)
        } else {
            console.log('Conectado!')
        }
        client.query(`SELECT * FROM usuarios WHERE email = '${email}';`, (error, result) => {
            release() 
            if (error) { //Se houver erro na execução da query retorna o erro completo
                console.error('Erro na execução da query: ', error.stack)
            } else {
                console.log("Macthes: ", result.rows.length)
                if(result.rows.length > 0){
                    bcrypt.compare(senha, result.rows[0].senha, (error, responseCompare) => {
                        req.session.user = result.rows
                        console.log(req.session.user)
                        callback(responseCompare)
                    })
                }
            }
        })
    })
}

app.get('/', (req, res) => {
    if(req.session.email){
        console.log('Session ON')
    } else {
        console.log('Session OFF')
        res.redirect('/login')
    }
    res.json({
        message: "teste"
    })
})
app.get('/login', (req, res) => {
    console.log("GET NO LOGIN")
})
app.post('/login',[
    body("emailInput").isEmail().normalizeEmail().withMessage('Este não é um email válido'),
    body("senhaInput").isLength({min: 8, max: 16}).trim().withMessage('Sua senha precisa ter entre 8 e 16 caracteres')
], (req, res, next) => { 
    console.log('REQUISIÇÂO AO SERVIDOR CHEGOU')
    const senha = req.body.senhaInput
    const email = req.body.emailInput
   
    const errors = validationResult(req);
    if(!errors.isEmpty()){
        return res.json({errors: errors.array()} )
    }
    console.log(req.body)
    loginUser(email, senha, result => {
        if(result){
            req.session.email = "teste"
        }
        res.json({
            email: email,
            isLogado: result
        });
    })
}) 

app.listen(8080, () => {
    console.log("Servidor escutando na porta 8080...")
});

我正在使用 nodemon 运行,所以我将其接收: “[nodemon] 由于更改而重新启动... [nodemon] 开始node index.js 服务员 escutando na porta 8080..."

当我尝试访问“http://localhost:8080/”时,我会收到一个永久加载!

你能帮帮我吗? 对不起,我来自巴西,我的英语不是很好!

【问题讨论】:

  • 您正在将“/”重定向到“/login”,但登录没有响应 res
  • 不相关,但在你的导入中去掉那些 cmets。它们完全没用,只会增加噪音(其中一些甚至是错误的复制和粘贴,即使不了解您的语言)。

标签: javascript node.js api express


【解决方案1】:

我重新启动计算机,错误停止了。

【讨论】:

    【解决方案2】:

    我的问题是使用的端口被另一个进程占用了,所以当你重新启动计算机时它就可以工作了。

    【讨论】:

    • 这不是答案,而是应该使用“添加评论”写在主要问题下方的评论
    猜你喜欢
    • 2022-01-08
    • 2013-10-10
    • 2020-10-14
    • 2018-12-15
    • 2018-02-18
    • 1970-01-01
    • 2022-11-16
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多