2012年2月4日土曜日

Node.jsをUbuntu 11.10にセットアップする ついでにExpress.jsもセットアップする その2

Express.jsのインストールもうまくいき、$ expressでテンプレートもできあがったので満足していたら実はまだ問題があったようで下記コマンドを実行したらエラーがもりもりと出てきてしまった。

$ node app.js

エラー内容はこちら。
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: Cannot read property 'prototype' of undefined
    at Object. (/home/yoo/matsuo-software/sandbox/node-firstapp/node_modules/express/lib/express/server.js:87:44)
    at Module._compile (module.js:444:26)
    at Object..js (module.js:462:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Module.require (module.js:357:17)
    at require (module.js:373:17)
    at Object. (/home/yoo/matsuo-software/sandbox/node-firstapp/node_modules/express/lib/express/index.js:28:31)
    at Module._compile (module.js:444:26)
    at Object..js (module.js:462:10)

することなすことすべてがエラーで返ってくるので常に心を整えていないとやっていられない。エラー場所として示されているserver.jsの87行目を見てみると

Server.prototype.__proto__ = connect.Server.prototype;

となっている。で、GoogleしてみるとExpress.jsに対応したConnect.jsのバージョンがどうやらインストールされていないらしい。インストールしているExpress.jsのバージョンは1.0.7で、そのバージョンのExpress.jsが対応しているConnect.jsは0.5.10らしい。しかしnpmからインストールするとConnect.jsは1.0.1がインストールされてしまうためにエラーとなっているようだ。なので下記コマンドで古いConnect.jsをインストールする。

$ npm install connect@0.5.10

これで冒頭のNode.jsのコマンドを実行するとサーバがリッスン状態に突入するので、http://localhost:3000にアクセスしてHello Worldの出力が正常にされているのを確認できた。ちなみに自分の環境にどのモジュールのどのバージョンがインストールされているかを調べるコマンドは下記。

$ npm ls

表示されるモジュールの一覧で、Connect.jsのバージョンが0.5.10になっているのが確認できると思う。

0 件のコメント:

コメントを投稿