2011-01-06 18 views
6

私はnode.jsを使用してwebappを実装しており、jadeテンプレートエンジンを使用して表現しています。express + jade:提供されたローカル変数がビュー内で未定義です(node.js + express + jade)

テンプレートは、ヘルパーやダイナミックヘルパーにはアクセスできますが、エクスプレスで提供され、layout.jadeで利用可能で定義されている "body"ローカル変数以外のローカル変数にはアクセスできません。

これは、コードの一部です:

app.set ('view engine', 'jade'); 

app.get ("/test", function (req, res) { 
    res.render ('test', { 
     locals: { name: "jake" } 
    }); 
}); 

と、これはtest.jadeです:私は(名前を参照)は、第2の行を削除すると

p hello 
=name 

、テンプレートが示す、正しくレンダリングウェブページの "hello"という単語。

500 ReferenceError: Jade:2 NaN. 'p hello' NaN. '=name' name is not defined 
NaN. 'p hello' 
NaN. '=name' 

私はヒスイを以下のローカル変数に対する正確例を表現してると信じて:私は=の名前が含まれている場合、それはにReferenceErrorがスローされます。私は何か間違っているのですか、これは急行や玉のバグでしょうか?

+1

がここに罰金作品ノード3.4、ジェイド0.6を得ていた、同じエラーを削除アイコン

link(rel='icon', href='/images/siteicon.png') 

をリンクするために、0.7を表現。 2)、いくつかの情報を提供できますか?例えば。あなたのバージョンとlayout.jade。 –

+0

ありがとうございました。いくつかのインストールの混乱の間、〜/ .node_librariesの下の古くなったエクスプレスディレクトリに終わった。それを削除し、 "npm install express"を実行して、最新の修正された問題をインストールしてください。 – Jake

+0

StackOverflowに関して、私は何をしますか?質問を削除しますか?他の人にはあまり有効ではありません。単なるバージョンのものですから。私はあなたのコメントを正解とすることはできません。 – Jake

答えて

7
app.set ('view engine', 'jade'); 

app.get ("/test", function (req, res) { 
    res.render ('test', { 
     name: "jake" 
    }); 
}); 

このようにすることができます。

3

=ではなく、#{variable-name}を使用できます。次に、私がどのように使用しているかの例を示します。 これは、ページをレンダリングするためのメニューです。ページが読み込まれるたびにページタイトルを渡すので、ページごとにapp.get関数を作成する必要があります。

App.js

var navigation = { 
    home : { 
    uri : "/", 
    url : "index", 
    title : "Home" 
    }, 
    lab : { 
    uri : "/lab", 
    url : "lab", 
    title : "Lab" 
    }, 
    profile : { 
    uri : "/profile", 
    url : "profile", 
    title : "Profile" 
    }, 
    timetable : { 
    uri : "/timetable", 
    url : "timetable", 
    title : "Timetable" 
    } 
} 

app.get(navigation.profile.uri, function(req, res){ //Profile 
    res.render(navigation.profile.url, { 
    title: navigation.profile.title, 
    navigation: navigation 
    }); 
}); 

profile.jade

section#page-content 
    h1#page-title #{title} 
    p Welcome to #{title} 

layout.jade

!!! 5 
html 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/reset.css') 
    link(rel='stylesheet', href='/stylesheets/style.css') 
    body 
    header#site-header 
     nav#site-navigation 
     != partial("partials/navigation") 
    section!= body 
    footer#page-footer 
2

私はエラーがいつか発生していると思いますfavicon.icoのブラウザからの要求のために。 layout.jadeヘッドにこれらの行を追加し

てみてください。これは私が(

関連する問題