将React js和Node App部署到AWS时出错

时间:2019-07-17 15:30:52

标签: node.js reactjs amazon-web-services

我想将应用程序部署到aws,我进行搜索并找到了很多教程,我尝试了每个教程,并在浏览器中收到此错误:

  

无法获取/

我认为我的问题可能出在我的nodeJS服务器代码上。

这是我的server.js代码,希望大家能帮助我。

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const passport = require('passport');
const path = require('path');
const cors = require('cors');

//Api routes
const users = require('./routes/api/usuario');
const alumno = require('./routes/api/alumno');
const personal = require('./routes/api/personal');
const zonas = require('./routes/api/zonas');
const sepomex = require('./routes/api/sepomex');

const app = express();

app.use(cors());
//Body parser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//Db config
const db = process.env.NODE_ENV === "production" ? require('./config/keys').mongoURIProd : require('./config/keys').mongoURIDev;

//connect to mongo DB
mongoose
    .connect(db, { useNewUrlParser: true })
    .then(() => console.log('MongoDB Connected'))
    .catch(err => console.log(err));

//passport middleware
app.use(passport.initialize());
//passport config
require('./config/passport')(passport);

//Use routes

app.use('/api/usuario', users);
app.use('/api/alumno', alumno);
app.use('/api/personal', personal);
app.use('/api/zonas', zonas);
app.use('/api/sepomex', sepomex);


//serve static assets to production
if (process.env.NODE_ENV === "production") {
    //static folder
    app.use(express.static("client/build"));

    app.get('/*', (req, res) => {
        res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
    })
}


const port = process.env.PORT || 5000;


app.listen(port, () => {
    console.log(`Server running on port ${port}`);
});

我已经在heroku上部署了我的应用程序,并且运行正常。

1 个答案:

答案 0 :(得分:1)

如果要部署到EC2实例,则需要在app.listen中将IP地址指定为0.0.0.0,默认情况下将其设置为localhost,而不是您想要应用程序使用的地址可以从外面到达。

您应该将代码更改为

app.listen(port, '0.0.0.0', () => {
    console.log(`Server running on port ${port}`);
});