2012-04-11 21 views
3

最新のnodejs peepcodeチュートリアルを購入し、それに従っていますが、最初のステップを過ぎることはできません。nodejs peepcodeチュートリアル - 動作させることができません

nodejsのデバッグが私の謎であるため、数時間かけてエラーが発生したことがわかりました。

アプリの構造は次のようになります。

server.js

/** 
* Module dependencies. 
*/ 
require('coffee-script'); 

var express = require('express'); 
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.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

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

// routes 
require('./apps/authentication/routes')(app); 

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

/apps/authentication/routes.coffee:

routes = (app) -> 

    app.get '/login', (req, res) -> 
     res.render "views/login", 
      title: 'Login' 
      stylesheet: 'login' 

module.exports = routes 
ここ

example 
    |__public 
    |__views 
    |__assets 
    |__apps <- instead of routes 
    server.js 
    package.json 

は私の簡単なコードです

apps/auth entication /ビュー/ login.jadeテンプレート:ブラウズ時ファンシー

form(action='/sessions', method='post') 
    label 
    | Username 
    input(type='text', name='user') 
    label 
    | Password 
    input(type='password', name='password') 
    input(type='submit', name='Submit') 

何も、私は、公開/スタイルシート/ login.css の代わりに、認証/ routes.coffeからログインテンプレートのスタイルシートファイルとlogin.cssを得ましたhttp://localhost:3000/

Cannot GET/

いずれかのノードからノーその他のエラーメッセージ:問題がどこにあるか、私は理解することはできませんし、これは本当にFRである

Express server listening on port 3000 in development mode 

ustrating。 おそらくいくつかのダムのタイプミスがありますが、私はこれを理解できません:(

答えて

2

あなたはルート「/」のために設定したルートを持っていないことにより、指定されたようhttp://localhost:3000/loginにナビゲートすると、ログインのビューを返す必要があります。リソース '/ login'へのルート。次の行に何かを追加する必要があります。

app.get '/', (req, res) -> 
    #if not logged-in then send to /login else 
    res.render('/views/authenticated', 'Home', 'index') 

ルーティングの詳細についてはhttp://expressjs.com/guide.html#routingを参照してください。

+0

面白いのは、peepcodeチュートリアルはそれについては言いませんが、localhost:3000/loginはどちらも動作しません。すでに試したことがあります – Inoperable

+0

さてあなたは正しいです。以前は見たことのないタイプミスがありました/ログインルートが動作します。本当に迷惑です。 nodejsのこのような間違いをデバッグするためのヒント? – Inoperable

+0

nodejをデバッグするために私はhttps:// githubを使います。com/dannycoates/node-inspector – offner

1

すべてが意図したとおりに動作しているようですが、問題はGET /と一致するルートを定義していないことです。あなたのroutes.coffeeGET /loginに一致するルートを定義し、また、GET /anythinginyourpublicdirexpress.staticミドルウェアのおかげで動作します

+0

OOpp。 Trevorは申し訳ありません。私は前に逃したタイプミスがありました。これで/ loginリンクが機能します。 routes.coffeに{#__ dirname}/views/loginを追加しなければなりませんでした。本当にばかなこと。 nodejsのデバッグに関するヒント – Inoperable

+0

@PJJ Nodeは、非常に非同期であるため、主にデバッグが難しいと思います。 JavaScriptのイベントモデルがどのように機能するかは間違いありません。 (プラグ:私は[本を書いた](件名はhttp://leanpub.com/asyncjs/)) –

+0

5分前に買った;)チップをありがとう。チェックアウトするための他の読み取り? – Inoperable

関連する問題