我购买了最新的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
我无法弄清楚问题出在哪里,这真的令人沮丧。 可能有些愚蠢的错字,但我无法弄明白:(
答案 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
中间件。