I need help on this one I'm stuck for three days... I need to deploy a node.js web app with MySql database to Heroku. Here what I`m done so far:
- I succeeded to connect to heroku local on port 5000;
- I succeeded to connect with the command heroku run node app.js;
- I insert a proc file on the root directory :
Please help!
web: node app.js
But when I open the app from the heroku web site I have the following errors:
Here is my server file :
const express = require("express");
const exphbs = require("express-handlebars");
const bodyParser = require('body-parser');
const mysql = require('mysql');
require("dotenv").config();
const app = express();
const port = process.env.PORT || 5000;
// Parsing middleware
// Parse application/x-www-form-urlcoded
app.use(express.urlencoded({extended: true})); //New
app.use(express.json()); //To parse the incoming requests with JSON payloads
//to load static file
app.use(express.static("public"));
//Templating engine to change the extenion of file from .handlebar to .hbs
app.engine("hbs", exphbs({extname:".hbs"}));
app.set("view engine","hbs");
//Routes
const routes = require('./server/routes/user');
app.use("/",routes);
//Listen on port 5000
app.listen(port, () => console.log(`Listening on port ${port}`));
Here my app.js file
const mysql = require('mysql');
//Connection pool
let connection = mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME
});
// View Users
exports.view = (req, res) => {
//User the connection
connection.query('SELECT * FROM user WHERE status="active"', (err, rows) => {
//when done with the connection, release it
if (!err) {
let removedUser = req.query.removed;
res.render('home', { rows, removedUser });
} else {
console.log(err);
}
console.log('The data from user table:\n', rows);
});
};
//find user by Search
exports.find = (req, res) => {
let searchTerm = req.body.search;
//User the connection
connection.query('SELECT * FROM user WHERE first_name LIKE ? OR last_name LIKE ?', ['%' + searchTerm + '%', '%' + searchTerm + '%'], (err, rows) => {
if (!err) {
res.render('home', { rows });
} else {
console.log(err);
}
console.log('The data from user table:\n', rows);
});
};
exports.form = (req, res) => {
res.render('add-crew');
}
exports.create = (req, res) => {
const { first_name, last_name, email, phone, coc, expiration, PSSR, FFB, ADV } = req.body;
let searchTerm = req.body.search;
//User the connection
connection.query('INSERT INTO user SET first_name = ?,last_name = ?,email = ?,phone = ?,coc=?,expiration=?,PSSR=?,FFB=?,ADV=?', [first_name, last_name, email, phone, coc, expiration, PSSR, FFB, ADV], (err, rows) => {
if (!err) {
res.render('add-crew', { alert: 'Crew member added succesfully!' });
} else {
console.log(err);
}
console.log('The data from user table:\n', rows);
});
};
// edit crew function
exports.edit = (req, res) => {
//User the connection
connection.query('SELECT * FROM user WHERE id = ?', [req.params.id], (err, rows) => {
if (!err) {
res.render('edit-crew', { rows });
} else {
console.log(err);
}
console.log('The data from uer table:\n', rows);
});
}
// Update crew
exports.update = (req, res) => {
const { first_name, last_name, email, phone, coc, expiration, PSSR, FFB, ADV } = req.body;
connection.query('UPDATE user SET first_name=? ,last_name=?, email=?, phone=?, coc=?, expiration=?, PSSR=?, FFB=?, ADV=? WHERE id = ?', [first_name, last_name, email, phone, coc, expiration, PSSR, FFB, ADV, req.params.id], (err, rows) => {
if (!err) {
connection.query('SELECT * FROM user WHERE id = ?', [req.params.id], (err, rows) => {
//when done with the connection release it
// connection.release();
if (!err) {
res.render('edit-crew', { rows, alert: `${first_name} has been updated.` });
} else {
console.log(err);
}
console.log('The data from user table:\n', rows);
});
} else {
console.log(err);
}
console.log('The data from user table:\n', rows);
});
}
//delete crew
exports.delete = (req, res) => {
// User the connection
connection.query('DELETE FROM user WHERE id = ?', [req.params.id], (err, rows) => {
if(!err) {
let removedUser = encodeURIComponent();
res.redirect('/?removed='+ removedUser);
} else {
console.log(err);
}
console.log('The data from user table: \n', rows);
});
}
// hide user
// connection.query('UPDATE user SET status = ? WHERE id = ?', ['removed', req.params.id], (err, rows) => {
// if (!err) {
// let removedUser = encodeURIComponent('User successeflly removed.');
// res.redirect('/?removed=' + removedUser);
// } else {
// console.log(err);
// }
// console.log('The data from beer table are: \n', rows);
// });
// }
exports.viewall = (req, res) => {
//User the connection
connection.query('SELECT * FROM user WHERE id=?',[req.params.id], (err, rows) => {
//when done with the connection, release it
if (!err) {
res.render('view-crew', { rows });
} else {
console.log(err);
}
console.log('The data from user table:\n', rows);
});
}
Here my package.json file:
{
"name": "nodejs-usermanagement",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"dotenv": "^10.0.0",
"express": "^4.17.1",
"express-handlebars": "^5.3.2",
"mysql": "^2.18.1"
},
"devDependencies": {
"nodemon": "^2.0.7"
}
}
Here an update about the errors that are coming out after 10 minutes: