基本节点错误:app.use()需要中间件功能

时间:2020-08-05 20:45:42

标签: node.js

我是Node的新手,可能遇到一些非常基本的问题,出现了无法修复的错误消息:

proj/node_modules/express/lib/application.js:210
    throw new TypeError('app.use() requires a middleware function')

我一直在尝试使用csrf令牌模块,但是由于某种原因,我得到了上面的错误代码-在这里找不到修复程序实际上毫无头绪。对某些人来说可能很明显-有人有任何想法吗?

这是令人反感的代码行:app.use(csrfProtection); // ERROR HERE: REASON UNKNOWN

我安装的csurf模块与我正在遵循的教程完全相同。任何帮助将非常受到赞赏-原始代码如下:

const express = require('express');
const path = require('path');
const app = express();
const bodyParser = require('body-parser'); // enables use of body parser - body parser helps get data entered from a form (via req.body)
const subRoutes = require('./routes/subs');
const adminRoutes = require('./routes/admin');
const authRoutes = require('./routes/auth');
const mongoConnect = require('./util/database').mongoConnect;
let mailActivator = require('./util/nodemailer'); // activates nodemailer.js
const session = require('express-session');
const MongoDBStore = require('connect-mongodb-session')(session); // session argument from express-session
const csrf = require('csrf');

const store = new MongoDBStore({
    uri: 'mongodb+srv://_____:______@empool-3klmr.mongodb.net/______',
    collection: 'sessions'
});

const csrfProtection = csrf();

app.set('view engine', 'ejs'); // use EJS templating engine
app.set('views', 'views'); // views located here

app.use(bodyParser.urlencoded({
    extended: false
})); // parses text as URL encoded data (which is how browsers tend to send form data from regular forms set to POST) and exposes the resulting object (containing the keys and values) on req.body)
app.use(bodyParser.json()); // for JSON post API requests

app.use(express.static(path.join(__dirname, 'public')));

app.use(session({
    secret: "my secret",
    resave: false,
    saveUninitialized: false,
    store: store
}));

app.use((req, res, next) => {
    console.log('This demo middleware will always run...');
    console.log('req.get("host")', req.get("host"));
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    next();
});

app.use((req, res, next) => {
    res.locals.isLoggedIn = req.session.isLoggedIn;
    res.locals.csrfToken = req.csrfToken();
    next();
});

app.use(csrfProtection); // ERROR HERE: REASON UNKNOWN

app.use(subRoutes);
app.use(authRoutes);
app.use(adminRoutes);

//app.listen(3000);
mongoConnect(() => {
    app.listen(process.env.PORT || 3000);
});
console.log('App running successfully...');

这里

0 个答案:

没有答案