我是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...');
这里