Router.use()需要中间件函数但是有一个字符串?

时间:2017-05-20 14:50:12

标签: node.js express

我已经在论坛上看过并试图修复我能做的一切,但似乎仍无法让它发挥作用。我想使用路由器而不必使用app.get。我有另一个项目,我在做同样的事情,它工作得很好。所以我有点困惑为什么这个不起作用。非常感谢你。

这是我的app.js:

var express = require("express");
var app = express();
var indexRoutes = require("./routes/index.js");

app.use("view engine", "ejs");
app.use(express.static(__dirname + "/public"));

app.use("/", indexRoutes);

app.listen(process.env.PORT, process.env.IP, function() {
    console.log("server started on port : " + process.env.PORT);
});

以下是我使用的路线:

var express = require("express");
var router = express.Router();
var multer = require("multer");
var storage = multer.diskStorage({
    destination: function(req, file, callback) {
        callback(null, './uploads');
    },
    filename: function(req, file, callback) {
        callback(null, file.fieldname + '-' + Date.now());
    }
});
var upload = multer({storage: storage}).single('userPhoto');


router.get("/", function(req, res) {
   res.render("index"); 
});

router.post("/uploads", function(req, res) {
    upload(req, res, function(err) {
        if(err) {
            return res.send("error uploading file");
        }
        res.end("file is uploaded");
    });
});

module.exports = router;

2 个答案:

答案 0 :(得分:0)

我认为你必须改变这一行:

app.use("/", indexRoutes);

用这个:

app.use(indexRoutes);

此处有更多信息:TypeError: Router.use() requires middleware function but got a Object

答案 1 :(得分:0)

这显然是不对的:

telnet.sendCommand((byte)(TelnetCommand.DONT | TelnetOption.ECHO));

应该是:

https://plnkr.co/edit/akJqmQPsA9cT0t2nrmWJ?p=catalogue

FWIW,如果你仔细查看伴随错误的堆栈跟踪,你会发现导致错误的$.getJSON("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&type=restaurant&key=<API_KEY>&callback=?", function(data){ console.log("Data: " + data); }); 中的确切行:

app.use("view engine", "ejs");