こちらの書籍を使ってNode.jsの学習をしてました。(ちなみに今回私が使用しているのは初版です)
#Express Validatorが使えない??
そこで学習を進めていると、以下のエラーが吐かれました。
TypeError: validator is not a function
at Object.<anonymous> (作業フォルダ/app.js:38:9)
validatorが関数ではありませんと言われてしまいました。
そこで該当するソースコードをチェックしてみます。
var validator = require('express-validator');
(省略)
app.use(validator()); //エラーの該当部分
validatorを利用する前には、requireでモジュールをロードして、変数validatorで定義しています。
スペルミスもないです。
なぜエラーが???
とそこで、この書籍はメルカリで購入した初版だったこともあり、誤字や古い情報がちょこちょこあるのを思い出しました。
それで以下から
正誤表
を確認すると
やっぱりあった!!
本書で使用している Express Validator は、現在 ver.6 となり、仕様が変更されているため、本書の記述の通りでは正常
に動作しなくなっています。
Express Validator をインストールする際、以下のようにして ver. 5 をインストールしてご利用下さい。
・既に最新版をインストールしている場合、アンインストール
npm uninstall express-validator
・ver.5 をインストール
npm install --save express-validator@5.3.1
引用:Node.js 超入門[第 2 版] 【正誤表】 - 秀和システム
そもそもアプリにインストールしていた、Express Validatorに原因がありました。
正誤表の通りに再度、Express Validatorをインストールして無事エラーは解決しました。
なるべく新しい書籍を選ぶようにしたいけど、新品は高くて...(もっと給料上げて~)