N8n 未接受我的 PostgreSQL 設定

我已將 .env 檔案設定為使用 PostgreSQL 而不是 SQLite3:

DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=
DB_POSTGRESDB_PASSWORD=

使用者管理資料庫(必須與主資料庫相符,除非刻意分開)

N8N_USER_MANAGEMENT_POSTGRESDB_HOST=localhost
N8N_USER_MANAGEMENT_POSTGRESDB_PORT=5432
N8N_USER_MANAGEMENT_POSTGRESDB_DATABASE=n8n
N8N_USER_MANAGEMENT_POSTGRESDB_USER=
N8N_USER_MANAGEMENT_POSTGRESDB_PASSWORD=

但當我嘗試設定本機 Ollama 模型時,一直出現此錯誤:
錯誤:無法定位繫結檔案。嘗試的路徑:
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\Debug\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\Release\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\out\Debug\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\Debug\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\out\Release\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\Release\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\default\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\compiled\24.15.0\win32\x64\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\addon-build\release\install-root\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\addon-build\debug\install-root\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\addon-build\default\install-root\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\lib\binding\node-v137-win32-x64\node_sqlite3.node
標題產生失敗:錯誤:無法定位繫結檔案。嘗試的路徑:
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\Debug\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\Release\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\out\Debug\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\Debug\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\out\Release\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\Release\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\build\default\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\compiled\24.15.0\win32\x64\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\addon-build\release\install-root\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\addon-build\debug\install-root\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\addon-build\default\install-root\node_sqlite3.node
→ C:\Users\d-kin\AppData\Roaming\npm\node_modules\n8n\node_modules\sqlite3\lib\binding\node-v137-win32-x64\node_sqlite3.node

我使用的是 Node v24.15.0、npm v11.12.1 和 n8n v2.20.0

有人能幫我理解為什麼會發生這種情況嗎?

:waving_hand: @Mr_Kintu

AI Agent 節點需要 sqlite3,即使使用 PostgreSQL 也是如此。此錯誤可能是因為 sqlite3 套件未正確編譯以適應您的 Node.js 版本。Node v24.15.0 與 sqlite3 綁定有已知的相容性問題。

Node 24 還沒有預先編譯的二進位檔案,因此您需要使用以下命令手動重新編譯它們

# 安裝 Windows 構建工具
npm install --global windows-build-tools

# 然後重新編譯 sqlite3
npm rebuild sqlite3

# 或完全重新安裝 n8n
npm uninstall -g n8n
npm install -g n8n

您也可以考慮降級至 Node.js LTS(v20 或 v22),其相容性更好

# 使用 nvm(Node 版本管理器)
nvm install 20
nvm use 20

# 然後重新安裝 n8n
npm install -g n8n

這有幫助嗎?

歡迎加入社群,@Mr_Kintu!也感謝 @kjooleng 對 Node.js 版本的敏銳觀察。

要說明為什麼會發生這種情況:sqlite3 出現的錯誤 Could not locate the bindings file 是一個原生模組相容性問題。sqlite3 npm 套件包含了針對特定 Node.js 版本預先編譯的原生二進位檔。Node v24 是全新版本,n8n 依賴項中包含的預編譯二進位檔可能還沒有針對它進行編譯。

關鍵是:儘管你已經設定了 DB_TYPE=postgresdb,n8n 在其套件樹中仍然將 sqlite3 作為依賴項(它在內部用於某些後備路徑,並且在啟動時無論你的資料庫設定如何都會被載入)。如果 sqlite3 原生二進位檔無法在你的 Node 版本上載入,就會拋出該錯誤,n8n 根本無法啟動。

**解決方法:**使用 Node.js 20 LTS(n8n 官方支援的版本)。使用 nvm:

nvm install 20
nvm use 20
nvm alias default 20
npm install -g n8n

Node 18 LTS 也可以使用。兩者都官方支援。Node 22 在某些情況下可能可以使用,但截至 n8n v2.20,Node 24 尚未經過測試/支援。

一旦你升級到 Node 20,你的 PostgreSQL 設定應該會被正確識別。

歡迎來到 n8n 社區 @Mr_Kintu

從 Node 24 切換後,我建議檢查一件事:n8n 是否實際上正在加載你的 .env 值。另外,我不建議將 DB_POSTGRESDB_USER 和 DB_POSTGRESDB_PASSWORD 留空。請建立一個真正的 PostgreSQL 用戶,確認 n8n 數據庫存在,然後完全重啟 n8n。作為一個更簡單的解決方案,在 Windows 上使用 Docker Compose 和 PostgreSQL 可能比使用 npm 更穩定。

感謝 @kjooleng,我會試著降級到 node v22/v20 並使用 windows-build-tools 來安裝套件!我會讓你知道結果如何

@tamy.santos 哦天哪,那些變數欄位是真的!困擾我已久的是綁定問題。但感謝你分享!

感謝你們,@nguyenthieutoan & @kjooleng!讓我試試這些改進,然後回覆你們。