我正在尝试在具有端口 5000 的本地主机上的基本网页上显示图像 这是main.js
var http = require('http');
var domain = require('domain');
var root = require('./root');
var image = require('./image');
function replyError(res) {
try {
res.writeHead(500);
res.end('Server error.');
} catch (err) {
console.error('Error sending response with code 500.');
}
};
function replyNotFound(res) {
res.writeHead(404);
res.end('not found');
}
function handleRequest(req, res) {
console.log('Handling request for ' + req.url);
if (req.url === '/') {
root.handle(req, res);
} else if (req.url === '/image.png'){
image.handle(req, res);
} else {
replyNotFound(res);
}
}
var server = http.createServer();
server.on('request', function(req, res) {
var d = domain.create();
d.on('error', function(err) {
console.error(req.url, err.message);
replyError(res);
});
d.run(function() { handleRequest(req, res); });
});
function CallbackToInit(){
server.listen(5000);
};
root.init(CallbackToInit);
使用回调,我希望服务器仅在以下代码的 init 函数运行后才开始监听(5000)
var http = require('http');
var body;
exports.handle = function(req, res) {
res.writeHead(200, {
'Content-Type': 'image/png'
});
res.end(body);
};
exports.init = function(cb) {
require('fs').readFile('image.png', function(err, data) {
if (err) throw err;
body = data;
cb();
});
}
这是一项我无法使用 Express 的作业
我正在尝试显示 image.png,我认为 body = data 不起作用,因为它不能像字符串一样保存图像?我不想将任何 HTML 放入我的 js 文件中。
最佳答案
不要推出自己的应用服务器。使用伟大的 Web 应用程序框架之一,例如 express或connect .
var express = require('express');
var app = express();
app.use(express.logger());
app.use(express.static(__dirname + '/public'));
app.listen(process.env.PORT || 5000);
相信我,这更好。
关于javascript - Node js 显示来自服务器的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21489689/