不過當模組愈來愈複雜,dependencies 會是個製造問題的麻煩,例如在 Node.js for Windows 環境下,安裝 connect-mongodb@1.1.3 會發生錯誤。
"dependencies": {
"connect-mongodb": "latest"
}
錯誤訊息如下:
從訊息中可以發現 mongodb@0.9.7(在 connect-mongodb 的 package.json 指定的版本)這個版本無法在 Windows 環境下安裝。但如果使用 npm install mongodb 或是在 package.json 增加 mongodb 的相依(目前最新版本是 1.0.2),會發現最新版本的 mongodb 模組已經相容 Windows。
"dependencies": {
"mongodb": "1.0.2",
"connect-mongodb": "latest"
}
但即使增加了最新版的 mongodb 相依設定到 package.json,NPM 仍會強制幫 connect-mongodb 安裝其指定的 mongodb@0.9.7。
我參考 npm-shrinkwrap 想要設定 sub-dependencies,但最後並沒有成功。
另外一個嘗試結果可以解決問題,就是在 GitHub 上面 fork 一份原始專案,我想這也是一個可行的方案:
- 許多 Node.js modules 都有 GitHub Repository
- NPM 支援從 GIT / HTTP URL 取得 modules(很方便的 feature)
因此我將 masylum/connect-mongodb fork to lyhcode/connect-mongodb,再修改 package.json 的 mongodb 相依版本為 1.0.2。同時也將這個修改 Pull Request 到原始專案。
我不知道原作者什麼時候才會 accept 這個 request,不過在這段期間,可以直接將 GIT URL 作為 package.json 的 dependencies 設定值,如此一來就能自己快速解決某項模組的小問題。
"dependencies": {
"connect-mongodb": "git://github.com/lyhcode/connect-mongodb.git"
}
沒有留言:
張貼留言