【问题标题】:Setting up pg-pool connection on Next.js initialization: ERROR: "Can't resolve 'fs'在 Next.js 初始化时设置 pg-pool 连接:错误:“无法解析 'fs'
【发布时间】:2025-12-20 21:40:12
【问题描述】:

我正在尝试在我的 Next.js 应用程序中使用 npm pgpg-pool

我是池连接的新手,但我发现每当我的 Next.js 服务器初始化时我都需要建立一个池连接,并且我需要将该连接作为一个模块传递给我的应用程序。

来自 pg-pool 文档:

实例说明
池应该是您应用程序中的长期存在的对象。通常,您需要在应用启动时实例化一个池,并在应用的整个生命周期内使用该池的相同实例。如果您经常在代码中创建新池,则您的池初始化代码可能没有放在正确的位置。

因此,我创建了文件 my-app/lib/db.js 来初始化我的连接,并希望在我需要运行查询时将其传递给我的应用程序。

但是,当我尝试import { Pool } from 'pg'; 时,我收到一个错误: Module not found: Can't resolve 'fs'

I found this question 现在明白了..

您不能在 Next.js 中间件中使用使用 fs 的 Node.js 库。尝试改用客户端库。

所以,我的问题是,如何在 Next.js 服务器节点上启动 postgres-pool 连接并通过它路由所有查询?我需要使用不同的包吗?真的不知道在 Next.js 架构中放置它的什么位置。

【问题讨论】:

标签: node.js postgresql next.js node-pg-pool


【解决方案1】:

如果你只用“import { Pool } from 'pg';”来导入它在组件(不是 API 路由)中,如果不调用“getServerSideProps”或“getStaticProps”中的“Pool”对象,它将失败,因为 Nextjs 将在客户端包中包含“Pool”对象,这样您将尝试导入服务器浏览器中的 -side 模块“fs”。

如果您在“getServerSideProps”或“getStaticProps”中调用“Pool”,Nextjs 将知道不在客户端捆绑包中包含“Pool”对象,问题将得到解决。

这里有很好的解释:https://maikelveen.com/blog/how-to-solve-module-not-found-cant-resolve-fs-in-nextjs

【讨论】:

最近更新 更多