簡體   English   中英

在 Next.js 初始化時設置 pg-pool 連接:錯誤:“無法解析‘fs’

[英]Setting up pg-pool connection on Next.js initialization: ERROR: "Can't resolve 'fs'

我正在嘗試在我的 Next.js 應用程序npm pgpg-pool一起使用。

我是池連接的新手,但我收集到我需要在我的 Next.js 服務器初始化時建立池連接,並且我需要將該連接作為我的應用程序的模塊傳遞。

來自 pg-pool 文檔:

關於實例的注釋
該池在您的應用程序中應該是長期存在的 object 通常,您會希望在應用程序啟動時實例化一個池,並在應用程序的整個生命周期中使用該池的同一實例。 如果您經常在您的代碼中創建一個新的池,您可能沒有將池初始化代碼放在正確的位置。

因此,我創建了文件my-app/lib/db.js來初始化我的連接,並希望在我需要運行查詢時將其傳遞給我的應用程序。

但是,當我嘗試import { Pool } from 'pg'; 我收到一個錯誤: Module not found: Can't resolve 'fs'

我現在的理解是發現這個問題......

Next.js 中間件中使用 fs 的庫不能使用 Node.js。 嘗試改用客戶端庫。

所以,我的問題是,如何在 Next.js 服務器節點上啟動 postgres 池連接並通過它路由所有查詢? 我需要使用不同的 package 嗎? 真的不確定將其放置在 Next.js 體系結構中的什么位置。

如果你只用“import {Pool} from 'pg';”導入它在組件(不是 API 路由)中,如果不在“getServerSideProps”或“getStaticProps”中調用“Pool”object,它將失敗,因為 Nextjs 將在客戶端包中包含“Pool”object,這樣您將嘗試導入服務器瀏覽器中的端模塊“fs”。

如果您在“getServerSideProps”或“getStaticProps”中調用“Pool”,Nextjs 將知道不在客戶端包中包含“Pool”object,問題將得到解決。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM