看來,一個我的依賴,尚未1.0,改變了兩個版本之間的API。我的本地版本已經過時了,在推向Heroku時,Heroku下載了最新版本,並且API更改使我的應用程序崩潰。
結論:當使用不穩定的庫(未達到1.0)時,堅持特定的版本。
謝謝你們試圖幫助我。
=================
使用節點0.8.latest,快遞3.latest。
我的一條路線在當地完美工作,但部署應用時會出現500錯誤。錯誤消息非常特定於應用程序,但不合邏輯。這是一個TypeError,告訴我應該定義的東西是未定義的。爲了使它工作,我發現唯一奇怪的解決方案是從.gitignore中刪除node_modules
並在git下進行跟蹤。在heroku上推送時,沒有錯誤出現,url正常工作
當您知道我沒有更改node_modules文件夾內的任何代碼時,它開始變得陌生。我還通過比較本地npm ls
與推送到heroku時產生的模塊列表,比較本地和「heroku」安裝的依賴項,因爲它重建依賴關係,因爲它們是.gitignore
'd。我發現invalid
與npm ls
的一些包裝上有些小但難以解釋的差異。這個軟件包沒有在我的package.json
文件中,它們是我的軟件包在package.json
的依賴項。即connect
本地爲2.4.4,heroku爲2.5.0,send
爲本地0.0.4,heroku爲0.1.0,emitter-compnonent
爲本地0.0.1,heroku爲0.0.5。其餘的是嚴格一致的。
另外要注意的是,錯誤的堆棧跟蹤點,這對兩種環境和相同的版本不取決於也不是不可以對具有不同版本的模塊依賴的模塊。所以即使是次要的依賴差異也不應該成爲問題的原因。
但是後來我看不出問題從哪裏來,我想避免跟蹤我的node_modules
文件。還是應該?
UPDATE
這是我的package.json文件按要求由赫克託·科雷亞
{
"name": "myapp",
"version": "0.1.0",
"dependencies": {
"express": "3.0.x",
"mongoose": "3.0.x",
"superagent": "0.9.x",
"oauth": "0.9.x",
"querystring": "0.1.x",
"consolidate": "~0.4.0",
"mustache": "~0.6.0",
"singly": "*",
"underscore": "~1.4.1"
},
"devDependencies": {
"mocha": "1.4.x",
"supertest": "0.1.x"
},
"engines": {
"node": "0.8.x",
"npm": "1.1.x"
}
}
請問你的包。 json看起來像?我懷疑它說「連接」:「> = 2.x」這可以解釋爲什麼Heroku的版本比當地環境更新。如果是這樣,請嘗試鎖定到您的package.json中的特定版本(例如「= 2.4.4」) –
根本不。正如我所說,這對2度的環境不同的版本在我的package.json文件中未列出的軟件包,他們在我的package.json模塊的依賴關係,所以我有過下載的版本沒有控制權。儘管如此,我將用我的package.json文件更新我的問題。 – DjebbZ