express中我已经写了 app.get("/")为什么还会走 app.get("/:albumName
")
我只是访问了127.0.0.1:8888
上图是报错
app.js中写了
var express=require("express")
var app=express()
var router=require("./router/router.js")
app.set("view engine","ejs")
app.use(express.static("./public"));
app.use(express.static("./uploads"));
app.get("/",router.showIndex);
app.get("/:albumName",router.showalbum);
app.get("/up",router.showup)
app.listen(8888)
router.js写了
var fs=require("fs")
var ejs=require("ejs")
var formidable=require('formidable');
var url=require("url")
var path=require("path")
var sd = require("silly-datetime");
exports.showIndex=function(req,res){
console.log(req.url)
fs.readdir("./uploads",function(err,files){
console.log(files)
if(err){
res.send("没有找到uploads文件")
}
res.render("index",{
albums:files
})
res.end()
})
};
exports.showup=function(req,res){
res.render("up",{
albums:[]
})
};
exports.showalbum=function(req,res){
var albumName = req.params.albumName;
var allAlbums = [];
fs.readdir("./uploads/"+albumName,function(err,files){
if(err){
res.send("没有这个文件夹")
}
(function iterator(i){
if(req.url==undefined){
return
}
if(i==files.length){
res.render("album",{
albumname:albumName,
images:allAlbums
})
return
}
fs.stat("./uploads/"+albumName+'/'+files[i],function(err,stats){
if(err){
res.send("找不到文件")
}
if(stats.isFile()){
allAlbums.push(files[i])
}
iterator(++i);
})
})(0)
})
}
因为
get("/:albumName")
的匹配范围是包含get("/")
的。。所以可以考虑换个路径,比如get("/album/:albumName")