LoginSignup
4
1

More than 3 years have passed since last update.

TypeError: validator is not a functionが解決しない

Posted at

とりあえず初心者向けの書籍を一冊購入。

とにかく写経でもいいから一通りのアプリを作成したいと動きをメモしつつとりあえず書き上げた。
さあ動かしてみよう

しかしコンソールログに出たのは・・・

TypeError: validator is not a function

いやいや読み込んでますけど汗

var validator = require('express-validator');
// ~~~~~~
// (中略)
// ~~~~~~
app.use(validator());

※本当はvar使っちゃいけないけどとりあえず写経なので、
あとサンプルのソースと比較しやすいためこのままにしてます

どこが違うのか比較しよう

ソースは同じ汗

となると、インストールしたモジュールのバージョンがちがうのか?

以下自分のpackage.json

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

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で同じエラー質問したやりとりみてて安定のググレカス。
このサイトで回答するひとってこういうタイプ多くない?

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1