Узел JS Middleware Требуется функция - PullRequest
0 голосов
/ 13 мая 2018

Когда я запускаю следующее:

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.

Консоль сообщает, что ошибка возникает в u в app.use(routes);.Однако, если я запустил:

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);

Из другого проекта, этот проект работает нормально, что заставляет меня поверить, что с моим текущим проектом что-то не так.

Однако я не могу понять, что именно.Я пытался посмотреть на несколько других проблем, похожих на мою, но ни одно из их решений не помогло.Заранее спасибо!

rout.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");
});

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Если вы выполняете функцию маршрутизатора в другом файле js, его необходимо экспортировать, чтобы ваш app.js мог его использовать.module.exports = router Это поможет

0 голосов
/ 13 мая 2018

Вам нужно экспортировать «роутер» из rout.js, чтобы он работал.

В вашем случае добавьте эту строку в конец rout.js module.exports = router;

Таким образом app.use будет использовать фактический экземпляр маршрутизатора.

...