Syntax Error.

[Sy] fluent-loggerをNode.js(v0.12.7)で使おうとしたら「Module did not self-register」とエラーになった

2015/07/21

Node.jsfluent-loggerを使ってfluentdを使ってるんですが、Node.jsv0.10.33からv0.12.7へアップグレードしたらエラーが出て動かなくなりました。

エラー内容はこうです。

$ node app.js
module.js:355
  Module._extensions[extension](this, filename);
                               ^
Error: Module did not self-register.
    at Error (native)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/vagrant/analytics/node_modules/fluent-logger/node_modules/msgpack/lib/msgpack.js:6:14)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)

調べてみるとどうやら他のモジュールでも同様のことが起きていて、対応としては軒並み「node v0.12.xに対応してないから、バージョン下げてね」だった。。。

しかたないので、しばらくv0.12.x系は使わないことにしました。バージョン管理にはnを使ってるので、以下のようにv0.10.33へ戻しました。

$ sudo n 0.10.33