とりあえず初心者向けの書籍を一冊購入。
とにかく写経でもいいから一通りのアプリを作成したいと動きをメモしつつとりあえず書き上げた。
さあ動かしてみよう
しかしコンソールログに出たのは・・・
TypeError: validator is not a function
いやいや読み込んでますけど汗
var validator = require('express-validator');
// ~~~~~~
// (中略)
// ~~~~~~
app.use(validator());
※本当はvar使っちゃいけないけどとりあえず写経なので、
あとサンプルのソースと比較しやすいためこのままにしてます
どこが違うのか比較しよう
ソースは同じ汗
となると、インストールしたモジュールのバージョンがちがうのか?
以下自分のpackage.json
{
"name": "mini-board-2",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"bookshelf": "^1.1.0",
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"ejs": "~2.6.1",
"express": "~4.16.1",
"express-session": "^1.17.0",
"express-validator": "^6.4.0",
"http-errors": "~1.6.3",
"knex": "^0.20.9",
"morgan": "~1.9.1",
"mysql": "^2.18.1"
}
}
以下サンプルのpackage.json
{
"name": "mini-board-2",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"bookshelf": "^0.13.3",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"ejs": "~2.5.7",
"express": "~4.16.0",
"express-session": "^1.15.6",
"express-validator": "^5.2.0",
"http-errors": "~1.6.2",
"knex": "^0.14.6",
"morgan": "~1.9.0",
"mysql": "^2.15.0"
}
}
全然違う
バージョンをそろえて、npm install
通りました
$ npm start
> mini-board-2@0.0.0 start C:\Users\user\Desktop\mini_board_2
> node ./bin/www
GET / 302 118.593 ms - 56
GET /users 200 179.510 ms - 1242
GET /stylesheets/style.css 200 22.919 ms - 753
GET /favicon.ico 302 5.750 ms - 28
GET /users 304 9.479 ms - -
原因は?
最初にいろんなパッケージをインストールする際、最新のパッケージをインストールしたためではないか。
本自体は昨年の5月に改訂されたがいろいろググるうちに自分と同じエラーを質問している方がいて、書き方が古いですよーみたいなことを言われている。
たしかに、ほかに出していたpaginationのエラーも今はこういう書き方ですよーみたいな内容の文章があった。
最新のNode.js情報を追いかけなければ。
参考文献・サイト
・掌田 津耶乃 (2019/5/10)Node.js超入門[第2版] 秀和システム
・https://qiita.com/maitake9116/items/7825d90c09f3e2f87dea
・https://stackoverflow.com/questions/56711444/typeerror-validator-is-not-a-function-after-installing-and-requiring-express
追伸
terat●ilで同じエラー質問したやりとりみてて安定のググレカス。
このサイトで回答するひとってこういうタイプ多くない?