用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
工作得很好