mysql - 我无法使用 MySQL 数据库在 Heroku 上部署 Node.js 应用程序
问题描述
我需要这个我被困三天的帮助......我需要将一个带有 MySql 数据库的 node.js Web 应用程序部署到 Heroku。这是我到目前为止所做的:
- 我成功连接到端口 5000 上的 heroku local;
- 我成功连接了命令 heroku run node app.js;
- 我在根目录中插入了一个 proc 文件:
请帮忙!
网络:节点 app.js
但是当我从 heroku 网站打开应用程序时,出现以下错误:
这是我的服务器文件:
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}`));
这是我的 app.js 文件
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);
});
}
这是我的 package.json 文件:
{
"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"
}
}
这里是关于 10 分钟后出现的错误的更新:
解决方案
推荐阅读
- vb.net - 在 VB.NET 中读取浮点值不会给出预期值
- c++ - C++ 中的队列 STL 使用循环数组或链表实现队列
- c++ - 如何在 Windows 上将 lld 与 CMake 一起使用?
- mysql - MySQL 列值的总和
- python - TypeError:并非所有参数都在字符串格式化 2.0 期间转换
- python-3.x - 意外行为 :: WriteToBigQuery PTransform 的“batch_size”参数(Python 3.7,Apache Beam)
- api - IIS Windows 身份验证 - 无法拒绝特定用户
- python - Ctrl-C 从 python 到 bash
- mysql - 选择最新的行,然后随机化这些行,然后显示随机化的前 2 行
- node.js - 如何从http获取url参数