我复制了示例服务器代码:
var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');
app.listen(80);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
当我访问images目录中的某个图像文件时,它没有显示图像。怎么实现呢?如果我尝试任何地址,那么始终是index.html的内容。
答案 0 :(得分:0)
您的node.js服务器是硬编码的,只返回一个文件index.html
,无论浏览器请求的文件是什么。因此,当浏览器请求可能在index.html
中引用的图片时,您的代码只会再次发回index.html
。
请记住,默认情况下,node.js服务器不提供任何文件。因此,您希望服务的所有文件都必须专门编码,或者您可以使用一些帮助程序(如Express.static()
)来提供整个静态文件目录。
另外,socket.io与提供图像文件无关,所以我不清楚为什么要在问题标题中将这两个主题链接在一起。
仅供参考,如果您使用Express框架作为Web服务器,那么您可以使用Express.static()
通过一行代码提供整个图像文件目录。有关详细信息,请参阅Express doc。