express3で外部ファイルで書かれたルーティングのイベントハンドラからappオブジェクトを使うための方法

March 23, 2013,
tags: express3 nodejs


このエントリーをはてなブックマークに追加

タイトルこれでいいのかなって感じですが、要はroutes/以下に配置されたルーティング時の処理を記述ファイル内でappオブジェクトを使う方法っす。
一応「日本最速express3入門」を読みながらやっていたのですが、なぜかappオブジェクトが空だといわれますた。。。

コードはこんな感じです。

app.js

var express = require('express')
  , routes = require('./routes')
  , http = require('http')
  , path = require('path')
  , redis = require('redis')
  , fs = require('fs');

// var app = express();
var app = module.exports = express();</code></pre>

で、routes/hoge.jsがこんな感じですた。

/*
 * GET home page.
 */
var app = module.parent.exports

exports.index = function(req, res){
  console.log(app);
  res.render('index', { title: 'Express' });
};

んで、console.logでappの中身確認してたら、空でした。
なんでだろうと悩んでしまいましたが、よーくみたらroutesをrequireするまえにapp変数にexpress()の値を入れてあげなきゃですよね。。。。
つまらないことで悩んでしまいました。。。。

ということでこういう感じapp.jsを記載してあげれば問題ないです。

var express = require(‘express’);
var app = module.exports = express();
var routes = require(‘./routes’)
  , user = require(‘./routes/user’)
  , acount = require(‘./routes/account’)
  , http = require(‘http’)
  , path = require(‘path’)
  , redis = require(‘redis’)
  , fs    = require(‘fs’);

comments powered by Disqus