【问题标题】:req.params undefined in modulereq.params 在模块中未定义
【发布时间】:2015-09-09 16:33:53
【问题描述】:

我有一个工作 api 用于在我的 server.js 中的路由中提供图像,并希望将其抽象为一个单独的模块。

之前:

app.get('/api/image/:filename', function(req, res){
  var resourcePath = 'uploads/public/projectnumber/issues/small/' + req.params.filename + '.png';

  console.log(resourcePath)

  if(fs.existsSync(resourcePath)) {
    var file = fs.readFileSync(resourcePath);
    res.writeHead(200, 'Content-Type:application/pdf:image/png');
    res.end(file,'binary');
  }
  else {
    res.send(400, 'No image found');
  }
})

我想要这样的东西:

var ImageRouter = require('./routes/imageRouter');

app.use('/api/image/:filename', ImageRouter);

我已经尝试在我的 imageRouter.js 文件中这样写:

var express = require('express');
var fs = require('fs');
var router = express.Router();

router.use(function(req, res, next) {
  var resourcePath = 'public/images/' + req.params.filename + '.png';

  if(fs.existsSync(resourcePath)) {
    var file = fs.readFileSync(resourcePath);
    res.writeHead(200, 'Content-Type:application/pdf:image/png');
    res.end(file,'binary');
  }
  else {
    res.send(400, 'No image found');
  }

  next();
});

module.exports = router;

但是 req.params.filename 是未定义的。我哪里出错了?

谢谢!

【问题讨论】:

标签: node.js express


【解决方案1】:

您应该在您的imageRouter.js 路由器上使用get(),并在您的主应用程序上添加前缀。

use() 用于中间件。

这里是imageRouter.js

var router = require('express').Router();
var fs = require('fs');

router.get('/:filename', function(req, res) {
  var resourcePath = 'public/images/' + req.params.filename + '.png';

  if(fs.existsSync(resourcePath)) {
    var file = fs.readFileSync(resourcePath);
    res.writeHead(200, 'Content-Type:application/pdf:image/png');
    res.end(file,'binary');
  }
  else {
    res.send(400, 'No image found');
  }
});

module.exports = router;

还有你的 server.js:

var express = require('express');
var app = express();

var ImageRouter = require('./routes/imageRouter');

app.use('/api/image', ImageRouter);

【讨论】:

猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2018-10-09
  • 2015-06-21
相关资源
最近更新 更多