2

当我在本地运行我的 nodejs 代码时,它工作正常。我得到了想要的输出。

我的代码:

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

在本地运行时

在此处输入图像描述

  • index.html 包含“来自 index.html 的 Hello World”,并且位于同一目录中。

问题:
当我尝试在 heroku 上部署 web.js(包含与上面相同的代码)时,它似乎不起作用。
我希望在 heroku 上部署它时显示“来自 index.html 的 Hello World”。

执行以下命令 在此处输入图像描述

git push heroku master

在此处输入图像描述

这是heroku URL显示的内容在此处输入图像描述

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

可能出了什么问题。我是 nodejs 的新手,所以我认为我在这里遗漏了一些非常基本的东西。如果您是专家,请善意回答这个愚蠢的问题。我确实花了我一夜试图弄清楚。 我想要的只是从 index.html 文件中读取并在部署在 Heroku 上时在“ http://nameless-headland-9348.herokuapp.com/ ”上显示它包含的文本。

4

2 回答 2

3

您是否阅读并尝试过Heroku的 Node.js入门指南?您没有提供任何日志,因此很难诊断您的问题,但您的最后一个代码片段有一个明显的问题 - 它侦听端口 8080。您应该侦听 Heroku 提供给您的端口号(再次参见文档),使用类似这样的东西来检索它process.env.PORT

于 2013-07-11T20:01:13.917 回答
3

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

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

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

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

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

于 2013-07-11T10:34:51.563 回答