gpt4 book ai didi

mysql - Nodejs连接MySQL无法加载页面?

转载 作者:行者123 更新时间:2023-11-29 06:41:32 25 4
gpt4 key购买 nike

我可以毫无问题地在 node.js 上运行其他程序。当我想通过 NODE.js 连接到 MySQL 时,当我在终端中键入 nodejs mysqlConnection.js 并在浏览器中键入 http://localhost:8080/ 时,它会永远加载。

我的代码如下:

// Include http module,
var http = require('http'),
// And mysql module you've just installed.
mysql = require("mysql");

// Create the connection.
// Data is default to new mysql installation and should be changed according to your configuration.
var connection = mysql.createConnection({
user: "root",
password: "",
database: "framework"
});

// Create the http server.
http.createServer(function (request, response) {
// Attach listener on end event.
request.on('end', function () {
// Query the database.
connection.query('SELECT * FROM words;', function (error, rows, fields) {
response.writeHead(200, {
'Content-Type': 'x-application/json'
});
// Send data as JSON string.
// Rows variable holds the result of the query.
response.end(JSON.stringify(rows));
});
});
// Listen on the 8080 port.
}).listen(8080);

注意:MySQL 连接是正确的,因为我通过 PHP 连接到我的数据库没有问题。

注意:我的 js 文件旁边有一个名为 node_modules 的文件夹,里面有 mysql 文件夹。

我尝试通过 npm 安装 nodejs:

enter image description here

最佳答案

请求仅在发送响应时结束

您正在等待 end 事件,但从未发送响应(因为该响应是从 end 处理程序内部发送的,导致了一种死锁情况)。

正如@vkurchatkin 在评论中指出的那样,如果正在使用请求流,则在它完全被使用后将调用 end 处理程序,与响应的状态无关。在这种情况下,请求根本没有被使用,这意味着 end 处理程序只有在发送响应后才会被调用(可能作为请求拆卸的一部分)。

因此完全删除 end 处理程序应该可以解决问题:

http.createServer(function (request, response) {
connection.query(..., function(error, rows, fields) {
// TODO: handle `error`
response.writeHead(200, {
'Content-Type': 'x-application/json'
});
response.end(JSON.stringify(rows));
});
});

关于mysql - Nodejs连接MySQL无法加载页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21214828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com