从nodejs中的文件中读取并显示它

时间:2013-07-11 10:26:38

标签: node.js heroku github

当我在本地运行我的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网址显示enter image description here

的内容

背景:我正在使用AWS Ubuntu 12.04,而我的github存储库是this,其中包含所需的web.js文件。我正在使用Cygwin。

什么可能是错的。我是nodejs的新手,所以我觉得我在这里缺少一些非常基本的东西。如果您是专家,请善意回答这个愚蠢的问题。我真的花了我的夜晚试图解决它。 我想要的是从index.html文件中读取并在Heroku上部署时显示“http://nameless-headland-9348.herokuapp.com/”中包含的文本。

2 个答案:

答案 0 :(得分:3)

您正在尝试引用文件index.html并使用相对路径。这可能不适用于heroku,它会尝试从其他地方加载文件。

所以你想要的是相对于你的app.js加载它是:

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

它所做的一切(你的代码)都是控制台记录你的东西。虽然没有http服务器和任何东西,你试图通过浏览器访问它。没有任何服务器作为响应。

请阅读此答案,以了解如何通过http:Nodejs send file in response

发送文件

答案 1 :(得分:3)

您是否阅读并尝试了Heroku getting started guide Node.js?您没有提供任何日志,因此很难诊断您的问题,但您的上一个代码段有一个明显的问题 - 它会侦听端口8080.您应该收听Heroku为您提供的PORT号码(请再次查看文档),使用类似的东西来检索它process.env.PORT