javascript - Node js 显示来自服务器的图像

标签 javascript node.js

我正在尝试在具有端口 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 应用程序框架之一,例如 expressconnect .

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/

相关文章:

javascript - CSS 覆盖菜单在 Firefox 中不起作用

javascript - Hook javascript 事件来加载页面

javascript - 在 IE8 中被 img 屏蔽的 jquery 鼠标事件 - 所有其他平台/浏览器都可以正常工作

javascript - 检查小数点前 4 个数字和小数点后 1 个数字

javascript - 使用javascript访问jade元素

javascript - 使用客户端和服务器在两个单独的文件夹中将 Node 应用程序部署到 heroku

javascript - 在 Cypress 中设置本地存储

javascript - Puppeteer 加载数据花费了太多秒数

javascript - 为什么集合没有传到客户端

jquery - 有没有办法将 Jquery 所做的 HTML 元素类更改保存在生成​​的 EJS 文件中?