nodejs peepcode教程 - 无法让它工作

时间:2012-04-11 13:56:28

标签: javascript node.js coffeescript pug express

我购买了最新的nodejs peepcode教程并遵循它,但是我无法通过最初的步骤。

我花了几个小时后才发现我收到错误,因为调试nodejs对我来说是一个谜语,我感到很沮丧。

app结构如下所示:

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

这是我的简单代码:

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

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')

没什么特别的,我在public / stylesheet / login.css中得到了样式表文件和login.css 浏览http://localhost:3000/

时,而不是来自authentication / routes.coffe的登录模板
Cannot GET /

节点中没有任何其他错误消息:

Express server listening on port 3000 in development mode

我无法弄清楚问题出在哪里,这真的令人沮丧。 可能有些愚蠢的错字,但我无法弄明白:(

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

看起来一切都按预期工作。问题是您尚未定义与请求GET /匹配的路由。您只在GET /login中定义了与routes.coffee匹配的路线;此外,GET /anythinginyourpublicdir还可以使用express.static中间件。