QA@IT

TypeErrorがでないようにしたいです。お願いします。

539 PV

Node.js+ Express+ sqliteで会員登録ログインシステム付きのチャットアプリケーションを作っています。そこでexpressの機能のvalidationを使用して、その中のcheckというメソッドを使おうとプログラミングを書いたが、その機能はないとType errorがでます。これが出ないようにしたいです。ちなみにExpress-validatorなどの必要ファイルはインストール済みです。必要なモジュールもロード済みです。
そして、掲載しているコードは、ログインに必要な情報をpost送信したときの処理です。あと、メインのファイルです。
バーションは以下です。

ex-gen-app@0.0.0
├── bookshelf@0.13.3
├── cookie-parser@1.4.3
├── debug@2.6.9
├── ejs@2.5.9
├── express@4.16.4
├── express-session@1.15.6
├── express-validator@3.1.3
├── http-errors@1.6.3
├── knex@0.12.9
├── morgan@1.9.1
├── socket.io@2.1.1
└── sqlite3@4.0.2

router.post('/',function(req,res,next){

var request = req;
var response = res;
req.check('name','name!!!').notEmpty();
req.check('mail','mail!!').notEmpty();
req.getValidationResult().then((result)=>{
if(!result.isEmpty()){
var content = '';
var result_arr = result.array();
for(var n in result_arr) {
content += '' + result_arr[n].msg + ''
}
content += '';
var data = {
title: 'tin'
}
response.render('/',data);
}else{
var nm = req.body.name;
var mail = req.body.mail;
User.query({where: {name: nm},andwhere: {mail: mail}})
.fetch()
.then((model)=>{
if(model == null){
var data = {
title: 'retry',
content:'名前!!',
form: req.body
};
response.render('index',data);
}else{
request.session.login= model.attributes;
var data = {
content:'login',
form: req.body
};
response.render('/',data);
};
});
}
})
});

回答

https://express-validator.github.io/docs/

にある

const { check, validationResult } = require('express-validator/check');

のような、requireやimportが見当たりませんが、どこで呼び出していますか?

express-validatorが 3と古いAPIのバージョンのようで提示したURLからは変わってしまっていますが、それでも

var expressValidator = require("express-validator");

してから

app.use(expressValidator);

が必要になると思います。

他のmiddlewareをロードしている場合は順番にも気をつける必要があるかもしれません。

なお、現行バージョンでも(新しいアプリケーションを作るときには使うなとあるものの)
まだapp.useから旧スタイルを使用できるようです。

https://express-validator.github.io/docs/legacy-api.html

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。