【问题标题】:MERN deployment issue herokuMERN部署问题heroku
【发布时间】:2020-05-12 07:55:12
【问题描述】:

我刚开始使用后端,我正准备部署我的 crud 应用程序的后端,但我在路线上遇到了困难。在 heroku 上部署后,我只得到了 app.get('/') 的一部分。我找不到任何 router.get('/getData'.. 或 router.post('/updateData'..

这里是部署的heroku链接:

对于 app.get('/'):https://vast-beyond-50574.herokuapp.com/

对于 router.get('/getData):https://vast-beyond-50574.herokuapp.com/getData

对于 router.post('/updateData'):https://vast-beyond-50574.herokuapp.com/updateData

这是后端 server.js 的代码

const express = require('express');
var cors = require('cors');
const bodyParser = require('body-parser');
const logger = require('morgan');
const Data = require('./data');
const API_PORT = 3001;
const app = express();

app.use(cors());
const router = express.Router();

mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost/backend');
let db = mongoose.connection;
db.once('open', () => console.log('connected to the database'));
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(logger('dev'));

router.get('/getData', (req, res) => {
    Data.find((err, data) => {
        if (err) return res.json({ success: false, error: err });
        return res.json({ success: true, data: data });
    });
});

router.post('/updateData', (req, res) => {
    const { id, update } = req.body;
    Data.findByIdAndUpdate(id, update, (err) => {
        if (err) return res.json({ success: false, error: err });
        return res.json({ success: true });
    });
});

router.delete('/deleteData', (req, res) => {
    const { id } = req.body;
    Data.findByIdAndRemove(id, (err) => {
        if (err) return res.send(err);
        return res.json({ success: true });
    });
});

router.post('/putData', (req, res) => {
    let data = new Data();
    const { id, message } = req.body;
    if ((!id && id !== 0) || !message) {
        return res.json({
            success: false,
            error: 'INVALID INPUTS',
        });
    }
    data.message = message;
    data.id = id;
    data.save((err) => {
        if (err) return res.json({ success: false, error: err });
        return res.json({ success: true });
    });
});

app.get('/', (req, res) => {
    res.send('Deployed!');
});

app.use('/api', router);
const PORT = process.env.PORT || 3000
app.listen(PORT, () => console.log(`LISTENING ON PORT ${PORT}`));```

【问题讨论】:

    标签: node.js web heroku deployment mern


    【解决方案1】:

    您在 /api 路由 (app.use('/api', router);) 中使用您的路由器,这意味着所有这些路由都将以 /api 为前缀。因此,您应该能够访问 https://vast-beyond-50574.herokuapp.com/api/getData 并查看您的数据。 (但是,我尝试了这个并得到了一个不同的错误,您必须单独调试)。

    【讨论】:

    • 我已经尝试过了,但是遇到了错误并尝试了很多来解决它。这是heroku logs --tail" 命令后的错误:2020-01-26T22:49:13.592270+00:00 app[web.1]: GET /favicon.ico 404 0.675 ms - 150 2020-01-26T22:50:35.134043+00:00 app[web.1]: HEAD /api/getData - - ms - - 2020-01-26T22:50:35.130662+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=HEAD path="/api/getData" host=vast-beyond-50574.herokuapp.com request_id=5ea406e2-f4f9-47c5-bd34-422ace300816 fwd="217.182.175.162" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 protocol=https
    • 看起来您正在超时。我的猜测是它无法访问您的数据库。
    • 您在服务器日志中看到“已连接到数据库”吗?
    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2021-09-14
    • 2015-06-05
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多