2013-07-11 46 views
2

當我在本地運行我的nodejs代碼時,它工作正常。我得到所需的輸出。

我的代碼:從nodejs中讀取文件並顯示它

var fs = require("fs"); 
fs.readFile("index.html", function (err, data) { 
    if (err) throw err; 
    console.log(data.toString()); 
}); 

當本地

enter image description here運行

  • 的index.html含有 「index.html的從Hello World」 的,並在同一目錄下。

問題:
當我試圖在Heroku上部署web.js(其中包含與上述相同的代碼),它似乎並不工作。
我希望在我將其部署到heroku上時顯示「來自index.html的Hello World」。

以下命令執行 enter image description here

git push heroku master

enter image description here

這裏後什麼Heroku的URL顯示enter image description here

背景:我正在使用AWS Ubuntu 12.04,我的github存儲庫是this,它包含所需的web.js文件。我正在使用Cygwin。

什麼可能是錯的。我對nodejs很陌生,所以我想我在這裏錯過了一些非常基本的東西。如果你是專家,請善待回答這個愚蠢的問題。我從字面上度過了我的夜晚,試圖找出答案。 我想要的只是從index.html文件讀取,並在Heroku上部署時顯示「http://nameless-headland-9348.herokuapp.com/」中包含的文本。

回答

3

您正在嘗試引用文件index.html並使用相對路徑。這可能不適用於heroku,它會嘗試從其他地方加載文件。

所以,你想要的是相對加載到你的app.js是:

fs.readFile(path.join(process.cwd(), 'index.html'), function(err, data) { 

除了所有會做(代碼)是控制檯登錄你的東西。雖然沒有http服務器和任何東西,並且您正嘗試通過瀏覽器訪問它。沒有任何服務器可以作爲響應。

請仔細閱讀這個答案,爲了學習如何通過HTTP發送文件:Nodejs send file in response

+0

我是新來的nodejs所以這是你的意思? 'var http = require('http'); var fs = require(「fs」);如果(err) 返回控制檯,則函數(請求,響應){fresreadFile(path.join(process.cwd(),'index.html'),函數(err,data){ }。 (); console.log(data.toString()); })。listen –

3

你閱讀並嘗試Heroku getting started guide對Node.js的?你不提供任何日誌,所以很難診斷你的問題,但是你最後的代碼片斷有一個明確的問題 - 它監聽端口8080.你應該聽Heroku提供給你的端口號(再次參閱文檔),使用這樣的東西來取回它process.env.PORT

+0

謝謝!現在問題解決了。 –

+2

最終有什麼問題? –

相關問題