node:js TypeError:Router.use()需要中间件功能,但有一个对象

时间:2019-08-18 09:37:02

标签: node.js mongodb node-modules

收到此错误后,如何使用ejs作为视图引擎解决该错误,并在控制台底部以红线显示此错误“ [nodemon]应用程序崩溃-等待文件更改,然后再开始...“ ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 、、、、、、、、、、、、、、、、、、、、、、、、、、、 、、、、、

app.js

    var express = require('express');
    var createError = require('http-errors');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var fileUpload = require('express-fileupload');
    var session = require('express-session');
    // var flash = require('req-flash');
    var cors = require('cors');
    var config = require('./config/config');
    var glob = require('glob');
    var mongoose = require('mongoose');

    mongoose.connect(config.db);
    var db = mongoose.connection;
    db.on('error', () => {
      throw new Error('unable to connect to database at ' + config.db);
    });

    var models = glob.sync(config.root + '/app/models/*.js');
    models.forEach(function (model) {
      require(model);
    });

    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');

    var app = express();

    app.use(cors())

    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');

    app.use(logger('dev'));
    app.use(express.json());
    app.use(fileUpload());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));


    app.use(session({
        secret: 'nuerficnutrhgxmdshgjhf',
        resave: false,
        saveUninitialized: true
    }));


    // Global variables
    app.use(function(req, res, next){
        res.locals.success_msg = req.flash('success_msg');
        res.locals.error_msg = req.flash('error_msg');
        res.locals.error = req.flash('error');
        next();
    });

    //DB connection start
    mongoose.Promise = global.Promise;
    mongoose.connect('mongodb://localhost:27017/crud', {useNewUrlParser:         
    true})
    .then(() => console.log('connection successful'))
    .catch((err) => console.error(err))
    //DB Connection End


    app.use('/index', indexRouter);
    app.use('/', usersRouter);


    module.exports = require('./config/express')(app, config);

    app.listen(config.port, () => {
      console.log('Express server listening on port ' + config.port);
    });

1 个答案:

答案 0 :(得分:0)

在我的项目上运行App.js之后,我发现module.exports = require('./config/express')(app, config);这行引起了问题。我已将其设置为module.exports = { app },服务器已成功运行。

我以我的项目App.js为例。也许可以帮助您以最佳方式保留App.js。

require('./config/config');
require('./config/mongoose');
const express = require('express');
const routes = require('./routes/index');
const bodyParser = require('body-parser');
const {port, publicPath} = require('./config/port');
const app = express();

app.use(express.static(publicPath));
app.use(bodyParser.json());

routes.forEach(function(route) {
    let controller = require(route);
    app.use("/", controller);
});

app.listen(port , () => {
    //eslint-disable-next-line no-console
    console.log(`Server is running on port ${port}`);
})

module.exports = {app};