異なるバージョンの Moment.js と Moment Timezone で変数を使い回したら見事にバグった
- 2016 11/25
最新バージョンの [email protected] で生成した moment object を、古いバージョンの [email protected] を使ってる method に引数で渡して、日付処理をおこなったら華麗にバグったというお話です。
最新バージョンの [email protected] で生成した moment object を、古いバージョンの [email protected] を使ってる method に引数で渡して、日付処理をおこなったら華麗にバグったというお話です。
とある企業から Tech Lead のポジションでオファーを頂いたので、改めて「Tech Lead って知っているつもりではいたけど、具体的には何をする役職?」と思い調べてみました。
みなさん、詳しくまとめられているので、とても参考になりました 🙏
iframe 内のコンテンツの読み込みが完了したら何か処理をさせたい場合 onload イベントを使うことで実現できます。
socket.io を使いたくて npm install socketio –save でインストール後に require(‘socket.io’) したら Error: Cannot find module ‘socket.io’ が発生して「なんでだろう…?」って数十分ぐらい悩みました。
$ node index.js module.js:327 throw err; ^ Error: Cannot find module 'socket.io' at Function.Module._resolveFilename (module.js:325:15) at Function.Module._load (module.js:276:25) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.<anonymous> (/Users/username/works/sample/index.js:9:16) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10) |
結果としては socketio が使うべきモジュールではなくて正しくは socket.io というオチでした。package.json を下記のように修正して npm install し直したら無事に require(‘socket.io’) できました。
diff --git a/package.json b/package.json index 30cdfac..84192a7 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,6 @@ - "socketio": "^1.0.0" + "socket.io": "^1.5.1" } } |
socketio という紛らわしいパッケージ名はつけないで頂きたいですね。
Moment Timezone の古いバージョンを使っていて、先日のサマータイムの終了日時 2016年11月6日(日)02時00分 PDT を境目に UTC から PDT/PST への変換がバグってしまう問題に遭遇しました。
結果的には、使っていた moment-timezone のバージョンが古かったので、バージョンを最新にしたことで解決しました。