'TypeError: validator is not a function' after installing and requiring express-validator
'TypeError: validator is not a function' after installing and requiring express-validator
我已经用 npm install express-validator --save
安装了 express validator 并在我的 app.js
中需要它。然而,当我 运行 npm start
终端说它不是一个函数时。
在我的 app.js:
var validator = require("express-validator");
app.use(validator());
在我的 package.json 依赖项中:
"express-validator": "^6.0.1"
来自终端的响应:
app.use(validator());
^
TypeError: validator is not a function
at Object.<anonymous> (/mnt/e/CODING/Templates/leaftunehoney/SC2/app.js:30:9)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/mnt/e/CODING/Templates/leaftunehoney/SC2/bin/www:7:11)` at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
导致问题的原因是什么?
express-validator
不是函数,您使用它的方式:app.use(validator());
不正确,请查看以下文档:
connect-flash
不应在 validator
.
之前要求
var validator = require("express-validator");
app.use(validator());
之后
app.use(require('connect-flash')());
这里是维护者。
您似乎使用的是最新版本。 express-validator v6 has been released 几天前,它不再包含所谓的 "legacy API"。
您应该迁移到新的 APIs(例如以前在 express-validator/check
下的); the getting started guide* 应该会给你足够的信息来帮助你。
例如
const { check, validationResult } = require('express-validator');
app.post('/user', [
check('username').isEmail(),
check('password').isLength({ min: 5 })
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
// create/update the user however you want?
});
* 目前还没有正式的迁移指南,因为新的 API 已经存在了几年。
我已经用 npm install express-validator --save
安装了 express validator 并在我的 app.js
中需要它。然而,当我 运行 npm start
终端说它不是一个函数时。
在我的 app.js:
var validator = require("express-validator");
app.use(validator());
在我的 package.json 依赖项中:
"express-validator": "^6.0.1"
来自终端的响应:
app.use(validator());
^
TypeError: validator is not a function
at Object.<anonymous> (/mnt/e/CODING/Templates/leaftunehoney/SC2/app.js:30:9)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/mnt/e/CODING/Templates/leaftunehoney/SC2/bin/www:7:11)` at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
导致问题的原因是什么?
express-validator
不是函数,您使用它的方式:app.use(validator());
不正确,请查看以下文档:
connect-flash
不应在 validator
.
var validator = require("express-validator");
app.use(validator());
之后
app.use(require('connect-flash')());
这里是维护者。
您似乎使用的是最新版本。 express-validator v6 has been released 几天前,它不再包含所谓的 "legacy API"。
您应该迁移到新的 APIs(例如以前在 express-validator/check
下的); the getting started guide* 应该会给你足够的信息来帮助你。
例如
const { check, validationResult } = require('express-validator');
app.post('/user', [
check('username').isEmail(),
check('password').isLength({ min: 5 })
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
// create/update the user however you want?
});
* 目前还没有正式的迁移指南,因为新的 API 已经存在了几年。