【node.js】connect-mongoでSyntaxError: Use of const in strict modeエラーの対応
はじめに
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 }) }));
よくわからず順番にエラー消していってるだけになってる。。。
以上です