Я развернул приложение узла на Heroku и настроил ClearDB с MySQL Workbench.Когда я использую npm run start
, он отлично работает, данные отображаются.Когда я открою в Heroku;heroku local web
и heroku open
приложение развернуто, но данные не отображаются.Сообщение об ошибке: resource: net :: ERR_CONNECTION_REFUSED .
Моя база данных крошечная, поэтому ограничение размера не является проблемой.Мой Procfile
установлен на
web: npm run start
Почему мой clearDB не подключается через Heroku?
Некоторые другие ответы, которые я прочитал, включают .env
файл, которого у меня не было.Я попытался создать один с DATABASE_URL
, но без изменений.Я также попытался добавить port: process.env.PORT || 3036
в файл конфигурации базы данных.
Я могу подключиться к базе данных Heroku / ClearDB через MySQL Workbench, и все таблицы есть.
Файл конфигурации моей базы данных:
import mysql from 'mysql'
let pool = mysql.createPool({
connectionLimit: 10,
user: '******',
password: '*******',
host: '*******',
database: '*******',
port: process.env.PORT || 3036
});
let chirprdb = {};
chirprdb.all = () => {
return new Promise((resolve, reject) => {
pool.query('SELECT * FROM chirps', (err, results) => {
if (err) {
return reject(err);
}
return resolve(results);
})
})
}
export default chirprdb;
Ожидаемый результат: см. Приложение и все его данные по развернутому URL Heroku
Фактический результат: просмотр приложения, но данные не загружаются, ошибка - ресурс: net :: ERR_CONNECTION_REFUSED
Редактировать Я изменил базу данных (чтобы не публиковать здесь свои учетные данные) и создал новое соединение с MySQL Workbench.При нажатии на «тестовое соединение» я получил это предупреждение .
маршрутизатор, который импортирует chirperdb
import { Router } from 'express';
import db from '../db'
let router = Router();
router.get('/:id?', async (req, res) => {
let id = req.params.id;
if (id) {
try {
let results = await db.one(id);
res.json(results);
} catch (e) {
console.log(e);
res.sendStatus(500);
}
} else {
try {
let results = await db.all();
res.json(results);
} catch (e) {
console.log(e);
res.sendStatus(500);
}
}
});