読者です 読者をやめる 読者になる 読者になる

【node.js】connect-mongoでSyntaxError: Use of const in strict modeエラーの対応

javascript node.js mongodb

はじめに

Node.js + Express4を使っていて、つまづいた注意点まとめ - Qiita
expressでセッションを使おうとしたら上記の記事のワーニングが出ました。
これはセッションの保存先がローカルファイルだと出るワーニングだそうでとりあえずmongodbを入れてそちらに切り替えることにしました。

本題

で、以下のようなコードで実装したら「SyntaxError: Use of const in strict mode」エラーで起動できませんでした

var session = require("express-session");
var mongoose = require("mongoose");
var mongoStore = require("connect-mongo")(session);

mongoose.connect("mongodb://localhost:27017/sessions");
app.use(session({
    secret: "secret key",
    resave: true,
    saveUninitialized: true,
    store: new mongoStore({
        mongooseConnection: mongoose.connection
    })
}));

対応としては以下の修正でエラーは消えました

var mongoStore = require("connect-mongo/es5")(session);

が、そもそもあまり気にしてなかったのですがnode.jsのバージョンが古いみたいなので
よくわからなかったのですが、バージョン4系で1番新しい4.4.7を入れてみたところ上記のエラーが出なくなりました

結論
・node.jsのバージョンアップできればそれで対応
・バージョンアップできなければ「connect-mongo/es5」をrequireする形で対応

おまけ

ついでに最初、下記のエラーも出てました

throw new Error('Connection strategy not found');

これは「mongoose」というモジュールを使ったら消えました

修正前

app.use(session({
    secret: "secret key",
    store: new mongoStore({
        "db": "sessions",
        "host": "localhost",
        "port": 27017
    })
}));

修正後

var mongoose = require("mongoose");

mongoose.connect("mongodb://localhost:27017/sessions");
app.use(session({
    secret: "secret key",
    resave: true,
    saveUninitialized: true,
    store: new mongoStore({
        mongooseConnection: mongoose.connection
    })
}));

よくわからず順番にエラー消していってるだけになってる。。。

以上です