Rumah > Soal Jawab > teks badan
{SELESAI}. Ralat baharu
Ralat log Heroku:
Error: connect ECONNREFUSED 127.0.0.1:3306 2021-09-23T18:24:12.236657+00:00 app[web.1]: at TCPConnectWrap.afterConnect. [as oncomplete] (node:net:1146:16) { 2021-09-23T18:24:12.236658+00:00 app[web.1]: errno: -111, 2021-09-23T18:24:12.236658+00:00 app[web.1]: code: 'ECONNREFUSED', 2021-09-23T18:24:12.236658+00:00 app[web.1]: syscall: 'connect', 2021-09-23T18:24:12.236659+00:00 app[web.1]: address: '127.0.0.1', 2021-09-23T18:24:12.236659+00:00 app[web.1]: port: 3306, 2021-09-23T18:24:12.236659+00:00 app[web.1]: fatal: true
Maklumat/Latar Belakang:
React js frontend (kini dihoskan di Netlifty) Bahagian belakang Javascript Node menggunakan Express dan MYSQL2 (dihoskan pada Heroku)
Matlamat: Sambungkan permintaan POST bahagian hadapan Neflifty dengan bahagian belakang Heroku, dapatkan data muatan POST dan masukkannya ke dalam jadual MYSQL.
Kemas kini: 24 September 2021
Saya telah melakukan semua yang dicadangkan. Saya telah mencipta pangkalan data baharu menggunakan clearDB. Tambahnya dan uji sambungan dalam mysql Workbench. Jadual yang diperlukan dibuat. Kod hujung belakang dikemas kini untuk membuat sambungan ke pangkalan data baharu. Semak pembolehubah Heroko dan pastikan ia ditunjukkan dengan betul dalam pangkalan data baharu. Sekarang ada masalah kebenaran. {Diselesaikan}
Kod hujung belakang yang diperbetulkan baharu:
const express = require('express'); const app = express(); const port = process.env.Port || 8000 app.list en(port); console.log(`server is listing on ${port}`);Tamat masa
Soalan: Jika ini bersambung secara setempat pada meja kerja, mengapa Heroku tidak akan menyambung jika saya menambahkannya sebagai pembolehubah? {Dijawab}
Soalan baharu: Mengapakah ia cuba menggunakan port 8000 sedangkan ia sepatutnya menggunakan persekitaran? Mengapa ia tamat masa?
Sebarang bantuan mengenai perkara ini amat dihargai.
P粉6100288412023-12-14 09:46:11
Anda tidak boleh menyambung ke pangkalan data kerana tiada contoh pangkalan data berjalan pada Heroku. Sebaik sahaja anda menolak kod menggunakan Heroku CLI, Heroku akan menyediakan aplikasi NodeJS untuk anda, tetapi itu tidak bermakna ia juga akan menyediakan pangkalan data untuk anda.
Anda boleh menambah pangkalan data pada aplikasi anda melalui antara muka Heroku atau CLI. Daripada CLI (kami akan menyediakan ClearDB, tetapi mana-mana pemalam pangkalan data MySQL akan berfungsi):
heroku addons:create cleardb:ignite
Setelah selesai, anda mahukan URL pangkalan data baharu (bukan localhost):
heroku config | grep CLEARDB_DATABASE_URL
Keluaran arahan terakhir akan serupa dengan:
mysql://: @ / ?reconnect=true
Kini, dengan ini, anda harus mengubah suai sedikit kod anda dengan maklumat baharu. Anda tidak mahu mendedahkan bukti kelayakan pangkalan data dalam kawalan versi, jadi anda boleh melakukannya menggunakan pembolehubah persekitaran:
const db = mysql.createConnection({
connectionaLimit: 50,
user: process.env.DB_USER,
host: process.env.DB_HOST,
password: process.env.DB_PASSWORD,
database: process.env.DATABASE,
port: 3306
});
Selain itu, anda perlu menetapkan pembolehubah persekitaran untuk aplikasi Heroku anda yang sedang berjalan:
heroku config:set DB_USER=heroku config:set DB_PASSWORD= heroku config:set DB_HOST= heroku config:set DATABASE=
Kini anda mempunyai contoh pangkalan data yang dijalankan pada Heroku dan tika aplikasi NodeJS yang boleh menyambung ke pangkalan data.
Untuk bacaan lanjut anda mungkin ingin menyemak pautan ini:
https:// /lo-victoria.com/build-a-mysql-nodejs-crud-app-4-deploying-to-heroku-finale
https://www.bezkoder.com/deployment-node-js-app-heroku-cleardb-mysql/
https://raddy.co.uk/blog/how-to-deploy-node-js-express-ejs-mysql-website-on-heroku-cleardb/(Antara muka ini menggunakan Heroku)< /p>