用node.js显示html页面

这是我第一次使用node.js。 我得到它显示index.html,但它不显示在网站上的图像或其他任何东西,它只显示基本的HTML的东西。 这是我如何设置它。 没有Apache,PHP或其他任何服务器上,只是ubuntu,proftp和节点(和curl和其他依赖项)。 我为节点文件/ var / nodeFiles创build了主目录,而html / site文件的目录是/ var / nodeFiles / www,所以对于我的节点服务器文件,我这样做了:

var http = require('http'), fs = require('fs'); fs.readFile('/var/nodeFiles/www/index.html', function (err, html) { if (err) { throw err; } http.createServer(function(request, response) { response.writeHeader(200, {"Content-Type": "text/html"}); response.write(html); response.end(); }).listen(80); }); 

这个工作,但它只显示index.html文件和任何附加到它,所以没有图像,没有任何效果或任何HTML文件应该显示。 文件和目录都是正确的,我已经检查了两次,文件夹的权限是正确的。 那么我还需要做些什么才能让节点显示网站的其他部分? 我希望我已经正确地解释了我的自我,我被告知这是提出发展问题的地方。 感谢您抽出时间来阅读。

但它只显示index.html文件和附加到它的任何东西,所以没有图像,没有效果或任何HTML文件应该显示。

这是因为在你的程序中,无论请求是什么样的,你都只返回浏览器。

你可以看看一个更完整的例子,在这里https://gist.github.com/hectorcorrea/2573391将返回最常见的网页(HTML,JPG,CSS,JS)的正确文件

另外,看看这篇博文,我写了关于如何开始使用节点。 我想这可能会为你澄清一些事情: http : //hectorcorrea.com/blog/introduction-to-node-js

这为我做了诡计:

 var express = require('express'), app = express(); app.use('/', express.static(__dirname + '/')); app.listen(8080); 

检查这个基本的代码来设置HTML服务器。 它为我工作。

 var http = require('http'),
     fs = require('fs');


 fs.readFile('./ index.html',function(err,html){
    如果(err){
        扔呃; 
     }       
     http.createServer(function(request,response){  
         response.writeHeader(200,{“Content-Type”:“text / html”});  
        回复于(HTML);  
        到Response.End();  
     })听(8000);
 });

如果你的目标是简单地显示一些静态文件,你可以使用连接包。 我已经取得了一些成功(我自己对NodeJS还是很新的),结合使用它和twitter引导API。

在命令行

 :\> cd <path you wish your server to reside> :\> npm install connect 

然后在一个文件(我命名)Server.js

 var connect = require('connect'), http = require('http'); connect() .use(connect.static('<pathyouwishtoserve>')) .use(connect.directory('<pathyouwishtoserve>')) .listen(8080); 

最后

 :\>node Server.js 

注意事项:

如果您不想显示目录内容,请排除.use(connect.directory行。

所以我创build了一个名为“server”的文件夹放在文件夹中的index.html和同一个文件夹中的bootstrap API。 然后当你访问电脑的IP:8080时,它会自动使用index.html文件。

如果你想使用端口80(所以只要去http://,你不必input:8080或其他端口)。 你需要用sudo来启动节点,我不确定安全性的影响,但是如果你只是把它用于内部networking,我个人认为这不是什么大问题。 揭露外部世界是另一回事。

更新1/28/2014:

我没有必要在我的最新版本的东西上做下面的事情,所以先试试它,如果它不工作(你读错误抱怨找不到nodejs),继续尝试,可能尝试下面。

结束更新

另外,在ubuntu下运行时,我遇到了一个问题,使用nodejs作为名字(带有NPM),如果遇到这个问题,我推荐使用别名或者别的东西来“重命名”nodejs到节点。

我使用的命令(好或坏):

创build一个名为node的新文件

 :\>gedit /usr/local/bin/node #!/bin/bash exec /nodejs "$@" sudo chmod -x /usr/local/bin/node 

这应该是

 node Server.js 

工作得很好