需要 Node JS 中间件功能

Node JS Middleware Function Required

当我运行以下内容时:

const express = require('express');
const bodyParser = require('body-parser');

const routes = require("./routes.js");

var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(routes);

var port = process.env.PORT || 3000;
app.listen(port);

我得到:

TypeError: app.use() requires a middleware function.

控制台说错误发生在 app.use(routes); 中的 u 处。但是,如果我 运行:

var express = require('express');
var bodyParser = require('body-parser');
var clientSessions = require('client-sessions');

var routes = require("./routes");

var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use('/', express.static('./'));
app.use('/js', express.static('./public/js'));
app.use('/CSS', express.static('./public/CSS'));
app.use('/images', express.static('./public/images'));
app.use('/views', express.static('./public/views'));


app.use(clientSessions({
   secret: 'ugkgdiuwgbkbgjwjkgvo'
}));

app.use(routes);

var port = process.env.PORT || 3000;
app.listen(port);

在另一个项目中,该项目运行良好,这让我相信我当前的项目有问题。

但是我想不通是什么。我已经尝试查看其他几个与我的问题类似的问题,但他们的 none 解决方案有所帮助。提前致谢!

routes.js(根据@31piy 的请求):

var express = require("express");
var router = express.Router();

router.get("/signup",function(request,response){
    response.sendFile(__dirname + "/Client/HTML/signup.html");
});
router.post("/signup",function(request,response){

});
router.get("/login",function(request,response){
    response.sendFile(__dirname + "/Client/HTML/login.html");
});

您需要从 routes.js 导出“路由器”才能正常工作。

在你的情况下,在 routes.js 的末尾添加这一行 module.exports = 路由器;

这样 app.use 将使用路由器的实际实例。

如果你在不同的js文件中制作路由器功能 需要导出它以便您的 app.js 可以使用它。 module.exports=路由器 这将有助于