Node.js Express提供index.html而不是静态文件

Node.js Express提供index.html而不是静态文件,node.js,express,assets,Node.js,Express,Assets,我正在使用angular启动一个带有express应用程序的node.js。在cloud9上创建应用程序时,一切正常 我刚刚在我的ec2实例上发布了应用程序,现在node总是提供index.html而不是我的静态文件。。。当我查看chrome调试网络时,我看到所有js文件都已加载(状态200),但当我预览它们时,它是我的index.html文件。。。我的js文件的类型也设置为text/html 这是我的小server.js(没有路由,因为我伪造了角度数据,所以现在没有对服务器的调用…) 正如我之

我正在使用angular启动一个带有express应用程序的node.js。在cloud9上创建应用程序时,一切正常

我刚刚在我的ec2实例上发布了应用程序,现在node总是提供index.html而不是我的静态文件。。。当我查看chrome调试网络时,我看到所有js文件都已加载(状态200),但当我预览它们时,它是我的index.html文件。。。我的js文件的类型也设置为text/html

这是我的小server.js(没有路由,因为我伪造了角度数据,所以现在没有对服务器的调用…)

正如我之前所说的,cloud9上的一切都很好(现在不能在本地上尝试…)

有人知道出了什么问题吗

谢谢

多米尼克

PS:我忘了提到我的CSS文件也是如此

编辑:这里有一个我的意思的小图片!

当我看到我得到的任何文件的预览时

Edit2:我刚刚删除了我所有的文件,然后再次上传。同样的问题!我真的需要你的帮助


对于问题的现场演示,点击

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

在这一行:

app.use(express.static(path.join(__dirname, 'public')));
您已将express routed作为静态文件提供给“public”目录中的所有文件。默认情况下,如果调用该目录,express.static将提供“index.html”。因为您正在为“/”提供“public”目录,所以它将提供index.html

编辑:我不确定这是否是问题所在,但这部分代码是多余的:

http.createServer(app).listen()
你可以说:

app.listen([port], [callback]);
因为调用express()创建了一个服务器。
希望能有所帮助。

你能详细解释一下你所说的“静态文件”是什么意思吗

在这一行:

app.use(express.static(path.join(__dirname, 'public')));
您已将express routed作为静态文件提供给“public”目录中的所有文件。默认情况下,如果调用该目录,express.static将提供“index.html”。因为您正在为“/”提供“public”目录,所以它将提供index.html

编辑:我不确定这是否是问题所在,但这部分代码是多余的:

http.createServer(app).listen()
你可以说:

app.listen([port], [callback]);
因为调用express()创建了一个服务器。
希望这能有所帮助。

经过几个小时的研究,我终于找到了原因

问题根本与代码无关!我遇到了一个新的ec2实例,我没有将端口80路由到node.js应用程序(81**)

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

iptables-tnat-A预路由-ptcp-dport80-j重定向-到81**


谢谢大家

经过几个小时的研究,我终于找到了原因

问题根本与代码无关!我遇到了一个新的ec2实例,我没有将端口80路由到node.js应用程序(81**)

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

iptables-tnat-A预路由-ptcp-dport80-j重定向-到81**


谢谢大家

静态文件我指的是我的Javascript文件和样式表文件。我的根目录中有server.js,然后是/Public/js/Public/css。如何使它在调用“/”时提供index.html,然后提供js文件?我删除了http.createServer!正如你所说,这是多余的!不幸的是,这个问题仍然没有解决……静态文件指的是我的Javascript文件和样式表文件。我的根目录中有server.js,然后是/Public/js/Public/css。如何使它在调用“/”时提供index.html,然后提供js文件?我删除了http.createServer!正如你所说,这是多余的!不幸的是,这个问题仍然没有解决……jquery.min.js如何正确显示?您还可以检查公共目录中的所有文件是否有效,并且不是索引的副本。htmljQuery.min.js正在正确加载,因为它是从cdn加载的,而不是由我的服务器提供服务。我会尽快检查我的js文件是否仍然像index.html的原始文件,而不是副本。(作业中没有ssh访问:/)我只是检查了一下,我的JS/CSS文件还可以。这个包含了他们应该包含的内容。有人有办法解决这个问题吗?所有的文件都是这样的,我无法从截图上看到所有的。我看你的express服务器没有任何问题。你说你伪造了角度数据,你正在拦截页面上的所有链接,检查你的角度页面/脚本。是的,除了从CDN加载的文件外,所有文件都是这样的。我的朋友现在不打电话。只有几个局部视图填充了本地数据($scope.client={})。。。我不知道它怎么会发生。。。现在,我删除了服务器上的所有文件,并将其传输回服务器,以查看初次上传时是否存在问题!jquery.min.js如何正确显示?您还可以检查公共目录中的所有文件是否有效,并且不是索引的副本。htmljQuery.min.js正在正确加载,因为它是从cdn加载的,而不是由我的服务器提供服务。我会尽快检查我的js文件是否仍然像index.html的原始文件,而不是副本。(作业中没有ssh访问:/)我只是检查了一下,我的JS/CSS文件还可以。这个包含了他们应该包含的内容。有人有办法解决这个问题吗?所有的文件都是这样的,我无法从截图上看到所有的。我看你的express服务器没有任何问题。你说你伪造了角度数据,你正在拦截页面上的所有链接,检查你的角度页面/脚本。是的,除了从CDN加载的文件外,所有文件都是这样的。我的朋友现在不打电话。只有几个局部视图填充了本地数据($scope.client={})。。。我不知道它怎么会发生。。。现在,我删除了服务器上的所有文件,并将其传输回服务器,以查看初次上传时是否存在问题!