Node.js Express服务于index.html而不是静态文件

我用快速的应用程序启动一个node.js,使用angular度。 在cloud9上创build应用程序时,一切工作正常。

我只是在我的ec2实例上发布的应用程序,现在节点总是提供index.html而不是我的静态文件…当我看着铬debuggingnetworking,我看到所有js文件加载(状态200),但是当我预览它们,我的index.html文件…我的js文件的types也设置为text / html …

这里是我的小server.js(没有路由,因为我伪造我的angular度数据,所以现在没有电话给服务器…)

var express = require('express'), path = require('path'), http = require('http'), fs = require('fs'); var app = express(); var logFile = fs.createWriteStream('./logger/express.log', {flags: 'a'}); //use {flags: 'w'} to open in write mode app.configure(function () { app.set('port', process.env.PORT || 3000); app.use(express.logger({stream: logFile})); app.use(express.bodyParser()), app.use(express.static(path.join(__dirname, 'public'))); }); /*app.get('/events', eventRoute.getEvents); app.post('/events', eventRoute.saveEvent);*/ http.createServer(app).listen(app.get('port'), function () { console.log("Express server listening on port " + app.get('port')); }); 

正如我以前所说,一切正常在云9(现在不能尝试本地…)。

有没有人有什么问题的线索?

谢谢

多米尼克

PS:我忘了提及它与我的CSS文件是一样的!

编辑:这里是我的意思的小图片! 在这里输入图像描述

当我看到我得到的任何文件的预览 在这里输入图像描述

编辑2:我刚刚删除了所有的文件,并再次上传。 同样的问题! 我真的需要这个帮助!

佛现场演示的问题,击中该网站

你能详细说明你的“静态文件”是什么意思吗?

在这一行上:

 app.use(express.static(path.join(__dirname, 'public'))); 

你已经明确路由到“公共”目录中的所有文件作为静态文件。 默认情况下,如果该目录被调用,express.static将提供“index.html”。 由于您正在为“/”提供“公开”目录,因此会提供index.html。

编辑:我不知道这是否是问题,但这部分代码是多余的:

 http.createServer(app).listen() 

你可以说:

 app.listen([port], [callback]); 

因为调用express()创build了一个服务器。 希望有所帮助。

经过几个小时的研究后,我终于find了!

这个问题根本不是代码相关的! 我打了一个新的EC2实例,我没有路由端口80到我的node.js应用程序(81 **)。

我基本上只是运行这个命令,一切都开始正常工作。

iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT – 至81 **

谢谢大家