如何解决Netlify(Express服务器)上的502 Mysql查询错误

时间:2019-08-08 22:13:57

标签: mysql node.js express amazon-rds netlify

我在netlify here上部署了一个React app + Express服务器。我有一个简单的api端点,可在AWS上查询MySql数据库。

当我发出api请求时,系统会显示“无法加载资源:服务器响应状态为502”。

如果我只返回一个简单的 res.send("simple response")  然后一切正常,我在客户端上得到响应。有人可以为我指出我应该寻找的正确方向吗?

我试图在数据库上禁用skip_name_resolve参数,以查看主机名是否重要,打开对aws安全组上所有端口/ ip的访问,查找express + mysql服务器实现的常见示例,查找netlify功能文档,并在服务器中使用async等待。

// client.jsx
useEffect( () => {
    fetch("/.netlify/functions/server/api/getSalesData")
        .then(res => res.json())
        .then(res => console.log(res));

// server.js
const express = require("express");
const bodyParser = require("body-parser");
const serverless = require('serverless-http');
const mysql = require("mysql");
const db = mysql.createConnection({ ... });

db.connect(function(err) {
    if (err) throw err;
    console.log('You are now connected...')
});

const app = express();
const router = express.Router();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

router.get("/api/getSalesData", (req, res) => {
    // res.send({ express: "Hello from express" });
    db.query("SELECT * FROM Sales LIMIT 5", (err, rows) => {
        if (err) throw err;
        res.send(rows);
    });
});

app.use('/.netlify/functions/server', router);
module.exports = app;
module.exports.handler = serverless(app);

0 个答案:

没有答案