我在节点5.2.0上使用express.js 4.2.0。 起初我在我的app.js
var routes = require('./routes/form');
app.get('/', routes);
和form.js
var routes = require('express').Router();
routes.get('/', function(req, res) {
res.render('form',{title:'Login',userField:'Username',passField:'Password',photos: photos});
});
module.exports = routes;
它工作正常,我到了localhost:3000/
,我得到了表格。
现在我想添加一些代码,所以当我访问localhost:3000/YY/download
时,它会根据YY(ID)自动下载图像。
所以现在我在app.js
var routes = require('./routes/form');
var download = require('./routes/form');
app.set('multimedia', __dirname + '/public/multimedia');
app.get('/', routes);
app.get('/:id/download', download(app.get('multimedia')));
并在form.js
中var routes = require('express').Router();
routes.get('/', function(req, res) {
res.render('form',{title:'Login',userField:'Username',passField:'Password',photos: photos});
});
var download = function(dir){
return function(req,res,next){
var path;
if(req.params.id==='01')
{path = dir+ '/01.jpg';}
else
{path = dir+'/02.jpg';}
res.download(path);
}
}
module.exports = routes;
module.exports = download;
访问localhost:3000/YY/download
工作正常,但是访问localhost:3000/
不起作用。 GET正在等待,最终页面永远不会加载。
请帮我解决这个问题,因为我很困惑。
非常感谢。
答案 0 :(得分:1)
当您拨打两个电话时,您正在覆盖.exports
中的form.js
个对象:
module.exports = routes;
module.exports = download;
所以你永远不会出口路由器而快递正在收到令人困惑的指令(路由部分匹配,但它没有让路由器返回)。
如果你真的想保持这两个对象可以导出,那就行了 module.exports.routes = routes; module.exports.download = download;
并相应地更改对它的任何引用(<obj>.routes
等。)
我还建议将download()
移动到form.js路由逻辑中,而不是在app.js
中公开它。 :)