0

我正在尝试使用 readFileSync() 将 html 文件的内容显示到节点 js 文件中。但我得到这个错误:

Error: ENOENT, no such file or directory 'index.html'
    at Object.fs.openSync (fs.js:427:18)
    at Object.fs.readFileSync (fs.js:284:15)
    at port (/app/web.js:6:22)
    at callbacks (/app/node_modules/express/lib/router/index.js:161:37)
    at param (/app/node_modules/express/lib/router/index.js:135:11)
    at pass (/app/node_modules/express/lib/router/index.js:142:5)
    at Router._dispatch (/app/node_modules/express/lib/router/index.js:170:5)
    at Object.router (/app/node_modules/express/lib/router/index.js:33:10)
    at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Object.expressInit [as handle] (/app/node_modules/express/lib/middleware.js:30:5)

这是我的 web.js 文件:

var express = require('express');
var app = express.createServer(express.logger());
var fs=require('fs');
app.get('/', function(request, response) {
//  response.send('Hello World2 !');
response.send(fs.readFileSync('index.html').toString());
});

var port = process.env.PORT || 5000;
app.listen(port, function() {
 console.log("Listening on " + port);
});

“web.js”文件和“index.html”在我的github存储库中,地址如下:

https://github.com/myUsername/bitstarter/blob/master/node-js-sample/web.js 
https://github.com/myUsername/bitstarter/blob/master/node-js-sample/index.html

我尝试了不同的路径来解决“index.html”,但都没有奏效,例如

 /bitstarter/blob/master/node-js-sample/index.html
/node-js-sample/index.html
/bitstarter/node-js-sample/index.html
./index.html

!我正在使用 AWS EC2 ubuntun 12-4。我已经为这个错误苦苦挣扎了好几个小时!非常感谢任何帮助。

4

3 回答 3

2

这句话的app.get('/', ...意思是“当客户端要求'/'时......”也就是说:它将“网络空间”(URL路径)映射到动作。在您的情况下 - 读取并返回index.html.

因此,在您的情况下,正确的请求只是www.mydomain.com/.

如果您希望能够提供静态文件,请继续阅读express.static()

于 2013-07-28T19:58:54.780 回答
1

正如 Nitzan 所提到的,从长远来看,您将希望学习如何在构建节点应用程序时使用 express.static() 来提供 html 文件和模板。但是,针对您当前的问题,我建议以下内容:

  1. 将文件保存index.html到与您的 EC2 实例中的 web.js 文件相同的目录中(即不要尝试在您的 github 页面上远程访问它)。

  2. 使用以下代码:

var content = fs.readFileSync('index.html', 'utf-8');
response.send(内容);

这会将文件的内容读index.html入一个名为的变量content中,同时指定正确的编码。然后它将指示节点将内容发送到浏览器。

于 2013-07-28T20:16:58.880 回答
0

问题似乎是您没有在 git 中添加“index.html”。拳头你需要将它添加到 git 然后推送到 heroku。这将解决您的问题。希望能帮助到你 :)

于 2013-12-05T11:38:27.823 回答