![](/img/trans.png)
[英]ETIMEDOUT while connecting remote mysql database from node.js app on heroku server
[英]Connecting to a remote MySQL database from Stackblitz Node.js project
我有一個 Node.js Stackblitz 項目,我正在嘗試連接到遠程 MySQL 數據庫。 Stackblitz 中不可能有 MySQL 數據庫,因此嘗試遠程方法。 但是,每當我嘗試連接時,我都會收到“錯誤:連接 ETIMEDOUT”。 非常感謝任何幫助或指點。
我正在使用下面的代碼。 可以使用我正在使用的憑據訪問遠程數據庫,並在 Stackblitz 外部使用時返回數據。 Stackblitz 無法進行遠程數據庫訪問,還是我遺漏了什么?
const express = require('express');
const mysql = require('mysql2/promise');
const app = express();
const port = 3010;
const path = require('path');
app.use(express.static('static'));
app.get('/', async function (req, res) {
try {
// create connection
const connection = await mysql.createConnection({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
database: process.env.DB_DATABASE,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
});
// query database
const [rows, fields] = await connection.execute('SELECT * FROM `user`');
res.send({
rows,
fields,
});
} catch (err) {
console.log('err:', err);
}
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
對於任何尋求解釋的人。
目前 mysql 數據庫不能駐留在 StackBlitz 中。 此外,它也不能自己連接到外部 mysql 數據庫。
因此,您需要 StackBlitz 之外的后端 API 來進行數據庫調用,從而否定了首先在 StackBlitz 上構建后端的原因 (IMO)。 因此,目前建議的設置是通過 ngrok 安全地址從 StackBlitz 中的前端訪問的本地主機后端 API。
StackBlitz 正在努力讓基本的服務器請求在未來運行。 所以,注意這個空間。
我希望這個答案有助於節省其他人的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.