You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首个Node.js应用报错:ReferenceError: Pool未定义如何解决?

解决ReferenceError: Pool is not defined的问题

嘿,我一眼就揪出问题所在啦!你在引入pg模块的Pool构造函数时,不小心把它赋值给了Client变量,但后面创建实例的时候却调用了new Pool()——这就导致Node.js找不到Pool这个变量,直接抛出了ReferenceError,就像你把钥匙放进了抽屉却去柜子里找一样😅

问题根源就在这一行:

const Client = require('pg').Pool

你把pg.Pool构造函数存进了Client变量里,但后续代码却试图使用未定义的Pool,这完全是变量名不匹配导致的低级失误~

两种简单修正方案:

方案1:把变量名改成Pool(推荐,语义更清晰)

var express = require("express");
var app = express();
var port = process.env.PORT || 3000;
// 让变量名和构造函数对应,避免混淆
const Pool = require('pg').Pool
app.get("/", function(req,res){
 res.send("Wassup!");
});
// 现在用new Pool()就能正常创建连接池实例了
const client = new Pool({
 connectionString: process.env.DATABASE_URL,
})
client.connect();
client.query('SELECT table_schema,table_name FROM information_schema.tables;', (err, res) => {
 if (err) throw err;
 for (let row of res.rows) {
 console.log(JSON.stringify(row));
 }
 client.end();
});
app.listen(port);

方案2:如果想保留Client变量名,就用new Client()创建实例

var express = require("express");
var app = express();
var port = process.env.PORT || 3000;
const Client = require('pg').Pool
app.get("/", function(req,res){
 res.send("Wassup!");
});
// 这里改成new Client(),和前面的变量名对应
const client = new Client({
 connectionString: process.env.DATABASE_URL,
})
// 后续代码保持不变即可
client.connect();
client.query('SELECT table_schema,table_name FROM information_schema.tables;', (err, res) => {
 if (err) throw err;
 for (let row of res.rows) {
 console.log(JSON.stringify(row));
 }
 client.end();
});
app.listen(port);

额外小建议:

  • 尽量统一用const/let代替var声明变量,这样作用域更清晰,能避免不少隐性bug;
  • 数据库连接池最好抽成单独的模块管理,不要直接写在主文件里,后续维护和复用会方便很多;
  • 记得给client.connect()加上错误回调,比如client.connect(err => { if(err) console.error(err) }),避免连接失败直接导致程序崩溃。

内容的提问来源于stack exchange,提问作者Simonsoft177

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:42:27