Могу ли я узнать, что мне следует добавить, чтобы развернуть мои веб-приложения в Azure? Кажется, он не может отобразить файл ejs. Мне удалось запустить веб-приложение локально, но после развертывания Azure ничего не отобразила и не получила тайм-аут шлюза 504. https://github.com/codecinn27/flood_observatory_idp/blob/main/app.js это мой репозиторий на GitHub.
require("dotenv").config();
const express = require('express');
const mongoose = require('mongoose');
const path = require('path');
const app = express()
const port = 3000;
const url = process.env.MONGO_URL;
const clientOptions = { serverApi: { version: '1', strict: true, deprecationErrors:true } };
const dbName = 'Idp_Project';
const Data = require('./models/data');
app.use(express.json());
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'))
app.use(express.urlencoded({extended:true}));
async function main() {
try{
await mongoose.connect(url, clientOptions);
await mongoose.connection.db.admin().command({ ping: 1 });
console.info("Pinged your deployment. You successfully connected to MongoDB!");
}catch (error) {
console.error("Error connecting to MongoDB:", error);
}
}
main().catch(console.error);
app.get('/', (req, res) => {
res.render('home');
})
app.get('/input',(req,res)=>{
res.render('input');
})
app.post('/input', async (req,res)=>{
try {
const data = new Data(req.body.data);
// console.info(data);
await data.save();
console.info("Data saved:", data);
res.status(201).redirect(`/`);
} catch (error) {
console.error("Error saving data:", error);
res.status(500).send("Internal Server Error");
}
//res.send(req.body);
})
app.listen(port, () => {
console.info(`Example app listening on port ${port}`)
})[![][1]][1]
Я добавил следующую строку в ваш файл app.js:
const port = process.env.PORT || 3000;
Эта строка назначает номер порта из переменной среды PORT, если она установлена, в противном случае по умолчанию используется значение 3000. Это обеспечивает гибкость в настройке порта при развертывании приложения в различных средах.
При развертывании приложения в различных средах (таких как разработка, тестирование или производство) вам может потребоваться запустить его на разных портах. Используя процесс.env.PORT, вы можете легко настроить порт через переменные среды, не изменяя свой код.
приложение.js:
require("dotenv").config();
const express = require('express');
const mongoose = require('mongoose');
const path = require('path');
const app = express()
const port = process.env.PORT || 3000;
const url = process.env.MONGO_URL;
const clientOptions = { serverApi: { version: '1', strict: true, deprecationErrors: true } };
const dbName = 'Idp_Project';
const Data = require('./models/data');
app.use(express.json());
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'))
app.use(express.urlencoded({extended:true}));
async function main() {
try{
await mongoose.connect(url);
console.info("Pinged your deployment. You successfully connected to MongoDB!");
}catch (error) {
console.error("Error connecting to MongoDB:", error);
}
}
main().catch(console.error);
app.get('/', (req, res) => {
res.render('home');
})
app.get('/input',(req,res)=>{
res.render('input');
})
app.post('/input', async (req,res)=>{
try {
const data = new Data(req.body.data);
await data.save();
console.info("Data saved:", data);
res.status(201).redirect(`/`);
} catch (error) {
console.error("Error saving data:", error);
res.status(500).send("Internal Server Error");
}
})
app.listen(port, () => {
console.info(`Example app listening on port ${port}`)
})
пакет.json:
{
"name": "website_4",
"description": " #\u0000 \u0000f\u0000l\u0000o\u0000o\u0000d\u0000_\u0000o\u0000b\u0000s\u0000e\u0000r\u0000v\u0000a\u0000t\u0000o\u0000r\u0000y\u0000_\u0000i\u0000d\u0000p\u0000\r\u0000 \u0000",
"version": "1.0.0",
"main": "app.js",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"dotenv": "^16.4.5",
"ejs": "^3.1.10",
"express": "^4.19.2",
"mongoose": "^8.3.2",
"nodemon": "^3.1.0"
}
}
Вывод службы приложений Azure: