مهدی رفیعی
4 سال پیش توسط مهدی رفیعی مطرح شد
0 پاسخ

مشکل Node.js App به هنگام Deployment

سلام
وقتی که سعی میکنم Node.js APP ای که ساختم رو روی سرور نصب کنم به مشکل میخورم. اول سعی کردم روی cPanel نصبش کنم اما نشد. بعد از اون روی Heroku نصبش کردم اما موقع اجرا Crash داد. Log گرفتم و ارور ها این بودن:

2020-12-27T15:47:46.889808+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=nodejs-portfolio-server.herokuapp.com request_id=1e1793b9-e811-4234-bd9b-c20f3b74e987 fwd="95.223.73.133" dyno= connect= service= status=503 bytes= protocol=https
2020-12-27T15:47:47.182099+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=nodejs-portfolio-server.herokuapp.com request_id=4399a1ad-d48c-403f-91ae-1366c1b87c5d fwd="95.223.73.133" dyno= connect= service= status=503 bytes= protocol=https
app.listen(config.port)

رو تغییر دادم به:

app.listen(process.env.PORT || 5000)

و همینطور به چیز های مشابه اما مشکل حل نشد.

بعد سعی کردم به صورت دستی path هارو جواب بدم که بازم نشد:

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});
app.get('/favicon.ico', (req, res) => res.status(204));

همینطور توی cPanel ورژن Node رو عوض کردم و با همه چیزای موجود امتحانش کردم و حالتم رو هم با Development و Production امتحان کردم.

دیگه میخوام کم کم گریه کنم.

این package.jsom هست:

{
  "name": "node.js-api",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "start": "nodemon server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^5.0.0",
    "body-parser": "^1.19.0",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "express-validator": "^5.3.0",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.11.8",
    "mongoose-timestamp": "^0.6.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.6"
  },
  "engines": {
    "node": "15.4.0"
  },
  "description": ""
}

و اینم server.js

//2a6595e9-b280-4ff2-b95e-64e67203ae36

const uri = "mongodb+srv://<username>:<password>@cluster0.eky9x.mongodb.net/<dbname>?retryWrites=true&w=majority"

const express = require("express");
const app = express();
const path = express
const bodyParser = require("body-parser");
const config = require("./modules/config");
const mongoose = require("mongoose");
const expressValidator = require("express-validator");
global.config = require("./modules/config");

//Connect to DB
mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true }, (err, db) => console.log("connected to DB!"));
mongoose.Promise = global.Promise;
//

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json({ type: "application/json" }));
app.use(expressValidator());

const apiRouter = require("./modules/routes/api");
const panelRouter = require("./modules/models/controllers/v1/adminPanel");

app.use("/portfolio/api", apiRouter);
app.use("/portfolio/admin", panelRouter);

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});
app.get('/favicon.ico', (req, res) => res.status(204));

app.listen(config.port)

اینو از دوره آموزشی Restful API دنبال کردم.
@hesammousavi
ممنون.


ثبت پرسش جدید

به همدیگه کمک کنیم

به مهدی رفیعی کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام