萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> macOS 教學

Mac 本地安裝 Ghost 部落格報錯「Cannot find module node_sqlite3.node」完整解決方案

升級 macOS 10.10 Yosemite 後,開發者在本地透過 npm install --production 編譯安裝 Ghost 部落格平台時,常遇到啟動失敗錯誤:
Error: Cannot find module '.../binding/Release/node-v11-darwin-x64/node_sqlite3.node'
根因是 sqlite3 原生模組編譯失敗(編譯依賴的 Amazon S3 源在國內被牆,導致預編譯二進制下載失敗)。本文提供精準修復步驟:手動補齊預編譯二進制檔,避開網路編譯陷阱。

錯誤現象

$ npm start
Error: Cannot find module '/path/to/ghost/node_modules/sqlite3/lib/binding/Release/node-v11-darwin-x64/node_sqlite3.node'
    at Function.Module._resolveFilename (module.js:338:15)
    ...

Ghost 安裝報錯截圖

根因分析

  • sqlite3 是 Ghost 預設資料庫驅動,npm install 會嘗試從 node-pre-gyp 下載預編譯 .node 二進制檔(託管於 Amazon S3)。
  • 國內網路環境導致 S3 下載超時/失敗,node_sqlite3.node 未生成,運行時找不到模組。
  • 全域代理有時無效,因 node-pre-gyp 可能不走系統代理。

解決方案:手動植入預編譯二進制檔

  1. 確認 Node 版本與平台標識:
    執行 node -v (如 v0.10.x → ABI v11) 與 process.platform (darwin) process.arch (x64) → 目標路徑特徵:node-v11-darwin-x64。
  2. 下載對應版本 node_sqlite3.node:
    來源:node-sqlite3 GitHub Releases 或 npm sqlite3 頁面 下載對應 .node 檔(或從同版本 Node 環境的 node_modules/sqlite3/lib/binding/ 複製)。
  3. 放入正確目錄:
    ghost安裝路徑/node_modules/sqlite3/lib/binding/Release/node-v11-darwin-x64/
    (若目錄不存在請手動建立)。
  4. 重新啟動:
    npm start 即可正常啟動 Ghost。

進階:從源碼編譯 sqlite3(若找不到對應預編譯檔)

# 確保已安裝 Xcode Command Line Tools
xcode-select --install

# 進入 sqlite3 目錄重新編譯
cd /path/to/ghost/node_modules/sqlite3
npm run prepublish  # 或 node-gyp rebuild

需安裝 python2、make、gcc (Xcode CLT 提供)。編譯成功後同樣產出 node_sqlite3.node。

驗證與後續

  1. npm start 正常輸出 Ghost is running... 並可在 https://localhost:2368 存取。
  2. 建議將修復後的 node_modules 納入版本控制或備份,避免重裝環境再次踩坑。
  3. 生產環境建議改用 MySQL/PostgreSQL 替代 SQLite,避開原生模組編譯地雷。

結語

Ghost 安裝卡在 node_sqlite3.node 找不到,99% 是 sqlite3 原生模組編譯/下載失敗。手動補齊對應 ABI 版本的預編譯二進制檔 是最快、最穩定的修復路徑。記住:Node 原生模組安裝失敗 → 先查預編譯二進制下載源是否可達 → 手動植入或本地編譯,此法通用於所有 node-gyp / node-pre-gyp 依賴專案。

copyright © 萬盛學電腦網 all rights reserved