3

最新の nodejs peepcode チュートリアルを購入して従いましたが、最初のステップを通過できません。

nodejsのデバッグは私にとってなぞなぞなので、エラーが発生した場所を見つけるために数時間を費やした後、私はイライラしています。

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

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

これが私の簡単なコードです:

サーバー.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

apps/authentication/views/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')

http://localhost:3000/をブラウジングするときに authentication/routes.coffe からのログイン テンプレートの代わりに public/stylesheet/login.css にスタイルシート ファイルと login.css を取得しました。

Cannot GET /

ノードからの他のエラーメッセージもありません:

Express server listening on port 3000 in development mode

どこに問題があるのか​​ わかりません。これは本当にイライラします。おそらくどこかで愚かなタイプミスがありますが、私はこれを理解できません:(

4

2 に答える 2

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を参照してください。

于 2012-04-11T14:42:51.360 に答える
1

すべてが意図したとおりに機能しているようです。問題は、 request に一致するルートを定義していないことですGET /。;で一致するルートを定義しただけGET /loginです。routes.coffeeまた、ミドルウェアGET /anythinginyourpublicdirのおかげで機能します。express.static

于 2012-04-11T14:33:21.217 に答える