2014-03-07 35 views
2

我正嘗試創建一個玉石視圖並使用快捷菜單加載它。路徑/正確加載,但是當我加載helloworld時,瀏覽器顯示爲Cannot get /helloworld無法使用快遞加載玉石視圖

我已經創建瞭如下觀點,並將其保存到的意見:

extend layout 

block content 
    h1=title 
    p Hello! Hello World! Welcome to #{title} 

routes/index.js我這樣做:

exports.helloworld=function(req,res){ 
res.render('helloworld',{title:'Hello World!'}); 
}; 

而在app.js文件:

app.get('/helloworld',routes.helloworld); 

UPDATE :

完整app.js文件:

/** 
* Module dependencies. 
*/ 

var express = require('express') 
    ,routes = require('./routes') 

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(express.cookieParser()); 
    app.use(express.session({ secret: 'your secret here' })); 
    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 
app.get('/', routes.index); 
app.get('/helloworld',routes.helloworld); 
app.listen(3000, function(){ 
console.log("Express server listening on port %d in %s mode", app.address().port,  app.settings.env); 
}); 

routes.js

exports.index = function(req, res){ 
res.render('index', { title: 'Express' }) 
}; 

exports.helloworld=function(req,res){ 
res.render('helloworld',{title:'Hello World!'}); 
}; 

layout.jade沒有一個block content,將它添加到的layout.jade代替body!=body導致此錯誤:

Error: /home/anr/Desktop/node js/withdb/views/layout.jade:7 
5|  link(rel='stylesheet', href='/stylesheets/style.css') 
6| body 

7| #content 8| block content

Invalid indentation, you can use tabs or spaces but not both 
at Object.Lexer.indent (/home/anr/Desktop/node 
js/withdb/node_modules/jade/lib/lexer.js:762:15) 
at Object.Lexer.next (/home/anr/Desktop/node 
js/withdb/node_modules/jade/lib/lexer.js:870:15) 
at Object.Lexer.lookahead (/home/anr/Desktop/node 
js/withdb/node_modules/jade/lib/lexer.js:114:46) 
at Parser.lookahead (/home/anr/Desktop/node 
js/withdb/node_modules/jade/lib/parser.js:100:23) 
at Parser.peek (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:77:17) 
at Parser.tag (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:733:22) 
at Parser.parseTag (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:719:17) 
at Parser.parseExpr (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:188:21) 
at Parser.block (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:689:25) 
at Parser.tag (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:806:26) 

所以,用空格縮進,而不是導致一個空白頁,以load.This是我目前layout.jade

doctype html 
html 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/style.css') 
    body 
    block content 

Sublime Text縮進與four spacesTab

+0

我不認爲你得到的錯誤是模板渲染相關。很可能你的'app.get'在錯誤的地方。你完整的'app.js'文件是什麼樣的? – lxe

+0

你可以發佈你的完整路線文件嗎?它也是'不能得到\ helloworld'或'不能得到'/'helloworld'? – Kiran

+0

@Kiran更新了'routes/index.js' – vamsiampolu

回答

1

正如評論中所述, extend layout應該是extends layout。如果您有權訪問服務器日誌,則應該在開發環境中顯示這些日誌。

+0

用'block content'更新'layout.jade',固定縮進並試圖加載'helloworld',得到一個空白頁。請檢查你的文章並更新答案 – vamsiampolu

0

我知道這個問題已經不是8個月了迴應,但對於那些你尋求幫助,我仍然認爲,問題出在線路:

res.render('helloworld',{title:'Hello World!'}); 

應閱讀

res.render('index',{title:'Hello World!'}); 

因爲接下來會利用索引路由器。

祝你好運!

0

/routes/index.js改變這一點:

exports.helloworld=function(req,res){ 
    res.render('helloworld',{title:'Hello World!'}); 
}; 

這樣:

exports.helloworld=function(req,res){ 
    res.render('index',{title:'Hello World!'}); 
}; 

將工作就像一個魅力!

或其他...

在視圖文件夾中創建一個helloworld.jade文件。 這是更值得推薦。

這兩種解決方案在技術上都是正確的!