首页 > 解决方案 > Heroku 给了我一个 CORS 问题,但仅在部署 20 分钟后。在此之前,一切正常

问题描述

今天在 Heroku 上托管我的第一个 Node JS 后端,遇到了一个奇怪的问题。当我在部署后端后立即尝试注册/登录时,一切都很顺利,但如果我在大约 15 分钟后尝试注册/登录,我会收到 CORS 错误。(我正在使用 cors 依赖项)。

这是我的服务器代码:

const express = require('express')
const mysql = require('mysql')
const cors = require('cors')
const bcrypt = require('bcrypt')
const app = express()
const saltRounds = 10

app.use(cors())
app.use(express.json())

app.post('/signup', (req, res) => {
const username = req.body.username
const password = req.body.password

bcrypt.hash(password, saltRounds, (err, hash) => {
    if (err) {
        console.log(err)
    }
    db.query("INSERT INTO users (username, password) VALUES (?, ?)", [username, hash], 
    (err, result) => {
        console.log(err)
    })
})
})

app.post('/login', (req, res) => {
    const username = req.body.username
    const password = req.body.password

    db.query("SELECT * FROM  users WHERE username = ?", [username], (err, result) => {
        if (err) {
            res.send({err: err})
        } 
        if (result.length > 0) {
            bcrypt.compare(password, result[0].password, (err, response) => {
                if (response) {
                    res.send(result)
                } else{
                    res.send({message: "Invalid Credentials"})
                    }
            })
        } else {
        res.send({message: "User does not exist."})
        }
    
})

})

如果我的代码格式有点奇怪,我很抱歉,我总是在 StackOverflow 的代码格式上苦苦挣扎。

标签: javascriptnode.jsreactjsheroku

解决方案


弄清楚了!mysql 超时,因为我在 server.js 上使用 createConnection 而不是 createPool。希望这对将来的人有所帮助!


推荐阅读