2012-04-11 78 views
3

我买了最新的nodejs peepcode教程,并遵循它,但我无法通过第一步。nodejs peepcode教程 - 不能得到它的工作

因为调试nodejs是一个谜语,我花了几个小时找出自己得到错误后,我感到沮丧。

应用程序的结构是这样的:

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/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/

没有从节点的任何其他错误信息之一:

Express server listening on port 3000 in development mode 

我想不出问题出在哪里,这是真的FR 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教程不会说s ** t关于它,但localhost:3000 /登录不起作用。已经试过了,以及 – Inoperable 2012-04-11 14:52:31

+0

嗯,你是对的。我有一个我之前没有看到的错字,现在/登录路线的作品。真的很烦人。有关在nodejs中调试这些错误的任何提示? – Inoperable 2012-04-11 14:59:36

+0

对于调试nodejs,我使用https:// github。com/dannycoates/node-inspector – offner 2012-04-11 15:30:18

1

它看起来像一切工作正常,问题是,你还没有定义一条路线匹配请求GET /。定义匹配GET /login路线的routes.coffee;同时,GET /anythinginyourpublicdir将工作得益于express.static中间件

+0

OOpp。对不起,你是对的Trevor。我有一个我错过的错字。现在,/ login链接起作用。必须在routes.coffe中添加{#__ dirname}/views/login。真是愚蠢的事情。有关在nodejs中调试东西的任何提示? – Inoperable 2012-04-11 14:58:26

+0

@PJJ我会说节点很难调试,主要是因为它非常重要的异步。绝对了解JavaScript的事件模型如何工作。 (插件:我写了一本书(http://leanpub.com/asyncjs/))。 – 2012-04-11 18:24:23

+0

买了5分钟前;)谢谢你的提示。任何其他读取检查? – Inoperable 2012-04-11 18:33:11