2011-10-17 43 views
0

私はexpressとmongoose-authを使用してnode.jsアプリケーションを作成しています。私のアプリケーションを実行すると、私は次のスタックトレースでWebページを取得します。TypeError:未定義の 'auth'プロパティを読み取ることができません

/** 
* Module dependencies. 
*/ 

var express = require('express'); 
var mongoose = require('mongoose'); 
var mongooseAuth = require('mongoose-auth'); 
var model = require("./models"); 
var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
    app.use(mongooseAuth.middleware()) 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function(){ 
    app.use(express.errorHandler()); 
}); 
// Database 

var Proffile = mongoose.model('Profile', model.Profile); 
var Cloudrr = mongoose.model('Cloudrr', model.Cloudrr); 
var Cloud = mongoose.model('Cloud', model.Cloud); 
var User = mongoose.model('User', model.UserSchema); 
mongoose.connect('mongodb://localhost/cloudrr'); 
// Routes 

app.get('/', function(req, res){ 
    res.render('index', { 
    title: 'Cloudrr | Lorem ipsum' 
    }); 
}); 
app.get('/index', function(req, res){ 
    res.render('index', { 
    title: 'Cloudrr | Lorem ipsum' 
    }); 
}); 
app.get('/left', function(req, res){ 
    if(req.loggedIn == True) 
    { 
     Profile.findById(req.user, function(user){ 
     res.render('left', { 
      title: "Welcome back!", 
      user_id: user.profileID, 
      avatar: user.avatar, 
      followers: user.followers.length(), 
      following: user.following.length(), 
     }); 
     }); 
    } 
    else 
    { 
    res.render("left", { 
     title: "you need to log in." 
    }); 
    } 
}); 

mongooseAuth.helpExpress(app); 
app.listen(3000); 
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 

とpackage.json:

TypeError: Cannot read property 'auth' of undefined 

    at HTTPServer. (/home/levi/Projects/Cloudrr/node_modules/mongoose-auth/node_modules/everyauth/lib/expressHelper.js:7:27) 
    at ServerResponse._render (/home/levi/Projects/Cloudrr/node_modules/express/lib/view.js:393:58) 
    at ServerResponse.render (/home/levi/Projects/Cloudrr/node_modules/express/lib/view.js:315:17) 
    at /home/levi/Projects/Cloudrr/app.js:41:7 
    at callbacks (/home/levi/Projects/Cloudrr/node_modules/express/lib/router/index.js:272:11) 
    at param (/home/levi/Projects/Cloudrr/node_modules/express/lib/router/index.js:246:11) 
    at pass (/home/levi/Projects/Cloudrr/node_modules/express/lib/router/index.js:253:5) 
    at Router._dispatch (/home/levi/Projects/Cloudrr/node_modules/express/lib/router/index.js:280:4) 
    at Object.handle (/home/levi/Projects/Cloudrr/node_modules/express/lib/router/index.js:45:10) 
    at next (/home/levi/Projects/Cloudrr/node_modules/express/node_modules/connect/lib/http.js:201:15) 

は、ここに私のapp.jsをです。

{ 
    "name": "cloudrr" 
    , "version": "0.0.1" 
    , "private": true 
    , "dependencies": { 
     "express": "2.4.6" 
    , "jade": ">= 0.0.1" 
    , "mongoose": ">= 2.1.3" 
    , "mongoose-types": ">= 1.0.3" 
    , "mongoose-auth": ">= 0.0.11" 
    } 
} 

私は間違っていますか?スタックトレースは、最初のルートの途中にある41行目を指しています。 Google検索では、同じエラーでeveryauth問題トラッカーにいくつかの問題が表示されますが、解決策のどれもが提供されていません。あなたの時間をありがとう。

+1

スタック 'expressHelper.js'の先頭にあるファイルを編集し、例外をスローするメソッドに 'debugger'ステートメントを挿入することで、これを追跡できます。次に、組み込みのノードデバッガまたはnode-inspector(選択したデバッガ)のようなツールを使用して、状態とcallpathを調べて、問題の場所を確認します。 – broofa

答えて

0

問題はブラケットのアンバランスが問題であることが判明したため、ブラケットのバランスを固定することで問題が解決しました。

0

私はあなたが必要なステップがないと思っています。mongoose-auth documentationのスキーマデコレーションを参照してください。

私は数週間前にいたかもしれません。現在のアプリケーションが新しく、それでもまだ小さい場合は、mongoose-authサンプルプログラムを使用して新しいプロジェクトを開始することができます。ログインしてログアウトできることを確認したら、アプリケーション機能を追加できます。

関連する問題