Javascript expressValidator错误:expressValidator不是函数
我正在尝试安装和使用这个软件包。我已经安装了软件包版本(6.0.0),然后在我的server.js文件中,代码是:Javascript expressValidator错误:expressValidator不是函数,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试安装和使用这个软件包。我已经安装了软件包版本(6.0.0),然后在我的server.js文件中,代码是: const bodyParser = require('body-parser') const expressValidator = require('express-validator') const express = require('express') const nunjucks = require('nunjucks') const sessionInMemory =
const bodyParser = require('body-parser')
const expressValidator = require('express-validator')
const express = require('express')
const nunjucks = require('nunjucks')
const sessionInMemory = require('express-session')
const cookieParser = require('cookie-parser')
然后我写了几行如下:
const app = express()
const documentationApp = express()
app.use(expressValidator())
当服务器重新加载更改(使用nodemon)时,应用程序崩溃并显示:
类型错误:expressValidator不是函数
在我的server.js文件中还有其他一些代码,但我已经去掉了大部分我认为不相关的代码
expressValidator的控制台日志:
{ oneOf: [Function: oneOf],
buildSanitizeFunction: [Function: buildSanitizeFunction],
sanitize: [Function],
sanitizeBody: [Function],
sanitizeCookie: [Function],
sanitizeParam: [Function],
sanitizeQuery: [Function],
buildCheckFunction: [Function: buildCheckFunction],
check: [Function],
body: [Function],
cookie: [Function],
header: [Function],
param: [Function],
query: [Function],
checkSchema: [Function: checkSchema],
matchedData: [Function: matchedData],
validationResult: { [Function] withDefaults: [Function: withDefaults] },
Result: [Function: Result] }
router.get('/email-adress', function (req, res) {
res.render('email-adress', { success: req.session.success, errors: req.session.errors })
req.session.errors = null
})
router.post('/finished', function (req, res) {
let email = req.body.email
req.checkBody('email', 'Email required').isEmail()
var errors = req.validationErrors()
if (errors) {
req.session.errors = errors
req.session.success = false
res.redirect('/email-adress')
} else {
req.session.success = true
res.redirect('/finished')
}
})
routes.js文件的代码:
{ oneOf: [Function: oneOf],
buildSanitizeFunction: [Function: buildSanitizeFunction],
sanitize: [Function],
sanitizeBody: [Function],
sanitizeCookie: [Function],
sanitizeParam: [Function],
sanitizeQuery: [Function],
buildCheckFunction: [Function: buildCheckFunction],
check: [Function],
body: [Function],
cookie: [Function],
header: [Function],
param: [Function],
query: [Function],
checkSchema: [Function: checkSchema],
matchedData: [Function: matchedData],
validationResult: { [Function] withDefaults: [Function: withDefaults] },
Result: [Function: Result] }
router.get('/email-adress', function (req, res) {
res.render('email-adress', { success: req.session.success, errors: req.session.errors })
req.session.errors = null
})
router.post('/finished', function (req, res) {
let email = req.body.email
req.checkBody('email', 'Email required').isEmail()
var errors = req.validationErrors()
if (errors) {
req.session.errors = errors
req.session.success = false
res.redirect('/email-adress')
} else {
req.session.success = true
res.redirect('/finished')
}
})
将此行替换为
这样做。移除
app.use(expressValidator())
行。耶!就连我也有同样的问题。您可以通过在根文件夹中写入命令来更改版本 命令:
npm install express-validator@5.3.1 --save-exact
Express Validator已更新,您不能以这种方式使用它 使用快速验证器 或者,通过运行以下命令,您可以继续使用以前的版本
npm uninstall express-validator
npm install express-validator@5.3.0
转到package.json将“express validator”:“^6.6.0”更改为“express validator”:“^5.3.0”,然后手动运行npm i
just update the express validator , will do the tri
npm安装快捷版-validator@5.3.1--准确地保存
这件事发生在我身上,因为我遵循的是一个过时的(2019)教程。如果您安装的是旧版本(5.3.1适合我),它就可以工作。我在与Jonathan Wexler的书《使用Node.js进行编程》一起工作时遇到了这个问题,Jonathan Wexlerconsole记录您的expressValidator并显示结果检查文档它与您在这里所做的不同它需要const{check,validationResult}=require('express-validator');然后在路由[check('username').isEmail(),check('password').isLength({min:5})]expressValidator中作为中间件传递检查是一个对象,而不是一个函数@ArpitPandey我可以看出其中的区别,我刚刚添加了routes.js文件的代码,该文件检查电子邮件输入以确保它是有效的电子邮件地址。我不确定如何为版本6重写该代码?谢谢,但这引发了一个新错误:throw new-TypeError('app.use()需要一个中间件函数')
它不会崩溃,但在提交时会进入/完成,但错误为req。check不是一个非常有效的函数,谢谢。最后一个问题,现在返回JSON,我如何将JSON放入模板中,并在出现错误时呈现电子邮件地址页面,或者如果没有问题,则呈现完成的页面?感谢您的帮助如果您的视图在API中,您可以在if-else条件下使用res.render,或者如果您的视图是单独的,您可以将JSON返回给API调用方,并在那里决定您要显示什么。检查我已经进行了更改。为了使其正常工作,最后一个问题是它显示了errorPage,但带有成功的URL(完成页)。我猜它需要一些if errors中的逻辑。I是否可以继续/停留在原始页面而不是帖子页面?然后使用express的red.redirect功能,它将根据您的需要重定向到successUrl或errorUrl,只需检查此线程。问题是使用库的版本6.0.0。取消链接可能会很有用倒立答案,解释为什么要降级库的版本以及为什么要手动执行。它可以在与答案相同的库版本中解决吗?我想知道你是否在给出负面评级之前运行解决方案…这很容易解决问题,就像上面的其他帖子一样,最好停止寻找无意义的内容给予负面评价的借口。
npm uninstall express-validator
npm install express-validator@5.3.0
just update the express validator , will do the tri