我想将应用程序部署到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上部署了我的应用程序,并且运行正常。
答案 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}`);
});