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 **
谢谢大家