Javascript Node.js-定义了一个函数,但仍引发错误
我正在开发一个聊天应用程序。我使用的是快速验证器Javascript Node.js-定义了一个函数,但仍引发错误,javascript,node.js,Javascript,Node.js,我正在开发一个聊天应用程序。我使用的是快速验证器 const express = require('express'); const validator = require('express-validator'); const container = require('./container'); function ConfigureExpress(app){ app.use(express.static('public')); app.use(cooki
const express = require('express');
const validator = require('express-validator');
const container = require('./container');
function ConfigureExpress(app){
app.use(express.static('public'));
app.use(cookieParser());
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(validator());
app.use(session({
secret: 'thisisasecretkey',
resave: true,
saveInitialized: true,
store: new MongoStore({mongooseConnection: mongoose.connection})
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
}
这是运行nodemon server时引发的错误:
C:\Users\Utkarsh Rai\aqchat\server.js:49
app.use(validator());
^
TypeError: validator is not a function
我试图解决这个问题,但无法理解我错在哪里。我尝试搜索此问题。来自:
因此,您需要创建自己的验证方法,如:
function ConfigureExpress(app){
app.use(express.static('public'));
app.use(cookieParser());
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
//Our validator code
app.use([
/*
ex. validator.check('username').isAlphanumeric()
*/
]);
app.use(session({
secret: 'thisisasecretkey',
resave: true,
saveInitialized: true,
store: new MongoStore({mongooseConnection: mongoose.connection})
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
}
express validator以最新版本更改规则
请看一看您使用express validator的方式不正确。 您必须从express validator导入validationResult
const { validationResult } = require('express-validator')
用户可以定义自己的中间件
const validate = (req, res, next) => {
const errors = validationResult(req)
if (errors.isEmpty()) {
return next()
}
//do whatever you want with errors
return res.status(500).json({
errors: errors,
})
}
在你的app.js中使用这个中间件,我可以通过查看app.usevalidater了解到这一点;这不是您使用express validator的方式。我刚刚开始,并不完全了解正确的用法。好吧,从阅读文档和下面的一些示例开始。我们不只是教你如何从零开始使用有文档的东西。你学习,你学习,你尝试一些与文档一致的东西。然后,如果你在一个特定的问题上陷入困境,你可以在这里发布你尝试过的,遇到的问题以及你陷入困境的地方。没有像您尝试使用的那样的通用验证程序中间件。您必须指定要验证的特定请求上的哪些字段以及该请求的验证约束条件。此处不适用除了指向文档的链接之外没有其他内容的答案。如果你知道问题的答案,那就自己写一篇文章来解释答案。也许吧,但这看起来像是一个简单的疏忽。考虑到怀疑的好处,他会发现并非所有express中间件都是带有选项参数的函数。
const validate = (req, res, next) => {
const errors = validationResult(req)
if (errors.isEmpty()) {
return next()
}
//do whatever you want with errors
return res.status(500).json({
errors: errors,
})
}