Setting up pg-pool connection on Next.js initialization: ERROR: "Can't resolve 'fs'
Setting up pg-pool connection on Next.js initialization: ERROR: "Can't resolve 'fs'
我正在尝试在我的 Next.js 应用程序中将 npm pg
与 pg-pool
一起使用。
我是池化连接的新手,但我了解到每当我的 Next.js 服务器初始化时我都需要建立池连接,并且我需要将该连接作为我的应用程序的模块传递。
来自 pg-pool 文档:
a note on instances
The pool should be a long-lived object in your application. Generally you'll want to instantiate one pool when your app starts up and use the same instance of the pool throughout the lifetime of your application. If you are frequently creating a new pool within your code you likely don't have your pool initialization code in the correct place.
因此,我创建了文件 my-app/lib/db.js
来初始化我的连接,并希望在我需要 运行 查询时将其传递给我的应用程序。
但是,当我尝试 import { Pool } from 'pg';
时出现错误:
Module not found: Can't resolve 'fs'
现在的理解是..
You can't use Node.js libraries that use fs in Next.js Middleware. Try using a client-side library instead.
所以,我的问题是,如何在 Next.js 服务器节点上启动 postgres 池连接并通过它路由所有查询?我需要使用不同的包吗?真的不确定将其放置在 Next.js 体系结构中的什么位置。
如果您仅使用“import { Pool } from 'pg';”导入它在组件(不是 API 路由)中,如果不在“getServerSideProps”或“getStaticProps”中调用“Pool”对象,它将失败,因为 Nextjs 将在客户端包中包含“Pool”对象,这样你会尝试在浏览器中导入 server-side 模块“fs”。
如果您在“getServerSideProps”或“getStaticProps”中调用“Pool”,Nextjs 将知道不在客户端包中包含“Pool”对象,问题将得到解决。
这里有个很好的解释:https://maikelveen.com/blog/how-to-solve-module-not-found-cant-resolve-fs-in-nextjs
我正在尝试在我的 Next.js 应用程序中将 npm pg
与 pg-pool
一起使用。
我是池化连接的新手,但我了解到每当我的 Next.js 服务器初始化时我都需要建立池连接,并且我需要将该连接作为我的应用程序的模块传递。
来自 pg-pool 文档:
a note on instances
The pool should be a long-lived object in your application. Generally you'll want to instantiate one pool when your app starts up and use the same instance of the pool throughout the lifetime of your application. If you are frequently creating a new pool within your code you likely don't have your pool initialization code in the correct place.
因此,我创建了文件 my-app/lib/db.js
来初始化我的连接,并希望在我需要 运行 查询时将其传递给我的应用程序。
但是,当我尝试 import { Pool } from 'pg';
时出现错误:
Module not found: Can't resolve 'fs'
You can't use Node.js libraries that use fs in Next.js Middleware. Try using a client-side library instead.
所以,我的问题是,如何在 Next.js 服务器节点上启动 postgres 池连接并通过它路由所有查询?我需要使用不同的包吗?真的不确定将其放置在 Next.js 体系结构中的什么位置。
如果您仅使用“import { Pool } from 'pg';”导入它在组件(不是 API 路由)中,如果不在“getServerSideProps”或“getStaticProps”中调用“Pool”对象,它将失败,因为 Nextjs 将在客户端包中包含“Pool”对象,这样你会尝试在浏览器中导入 server-side 模块“fs”。
如果您在“getServerSideProps”或“getStaticProps”中调用“Pool”,Nextjs 将知道不在客户端包中包含“Pool”对象,问题将得到解决。
这里有个很好的解释:https://maikelveen.com/blog/how-to-solve-module-not-found-cant-resolve-fs-in-nextjs