升級 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)
...

sqlite3 是 Ghost 預設資料庫驅動,npm install 會嘗試從 node-pre-gyp 下載預編譯 .node 二進制檔(託管於 Amazon S3)。node_sqlite3.node 未生成,運行時找不到模組。node-pre-gyp 可能不走系統代理。node -v (如 v0.10.x → ABI v11) 與 process.platform (darwin) process.arch (x64) → 目標路徑特徵:node-v11-darwin-x64。node_sqlite3.node:.node 檔(或從同版本 Node 環境的 node_modules/sqlite3/lib/binding/ 複製)。ghost安裝路徑/node_modules/sqlite3/lib/binding/Release/node-v11-darwin-x64/npm start 即可正常啟動 Ghost。# 確保已安裝 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。
npm start 正常輸出 Ghost is running... 並可在 https://localhost:2368 存取。node_modules 納入版本控制或備份,避免重裝環境再次踩坑。Ghost 安裝卡在 node_sqlite3.node 找不到,99% 是 sqlite3 原生模組編譯/下載失敗。手動補齊對應 ABI 版本的預編譯二進制檔 是最快、最穩定的修復路徑。記住:Node 原生模組安裝失敗 → 先查預編譯二進制下載源是否可達 → 手動植入或本地編譯,此法通用於所有 node-gyp / node-pre-gyp 依賴專案。