2013-10-21 8 views
6

Nodeを学習し始めました.Node and Expressを使用してWebアプリケーションを構築しようとしています。 app.jsファイルに、次のディレクトリ構造を持つ次のコードがあります。ExpressJsを使用するNodeJs:TypeError:stringはFunction.app.renderの関数ではありません

ディレクトリ構造:3000:

app 
    assets 
    controller 
    model 
    view 
     index.jade 
global 
node_modules 
app.js 
package.json 

-js-

var express = require('express'); 
var app = express(); 

app.configure(function() { 
    app.set('view', __dirname + '/app/view'); 
    app.set('view engine', 'jade'); 
    app.use(app.router); 
}); 

app.get('/', function(req, res){ 
    res.render('index', {title: 'express'}); 
}); 

app.listen(3000); 
console.log('Listening on port 3000'); 

コマンドnode appを実行し、localhostに行く後。次のエラーが表示されます。私はそれがこの行の文字列を好きではないと仮定しています - >res.render('index', {title: 'express'});。しかし、私はGoogleで見つけたすべてから、これは正しいようです。だから私は別のものを逃しているに違いない。

エラーメッセージ:

TypeError例外:stringはFunction.app.renderで関数でない(C:\ myappの\発現\ node_modules \発現\ LIB \ application.js:12:488)ServerResponseでC:\ myapp \ express \ app.js:19:6のコールバック(C:\ myapp \ express)で.res.render(C:\ myapp \ express \ node_modules \ express \ lib \ response.js:803:7) \ myapp \ express \ node_modules \ express \ lib \ router \ index.js:138:11)のパス(C:\ myapp(\ node_modules \ express \ lib \ router \ index.js: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js:173:5)の\\ Express \ (C:\ myapp \ express \ node_mod)にあるルータ(C:\ myapp \ express \ node_modules \ express \ lib \ router \ index.js:33:10) (C:¥myapp¥express¥node_modules¥express¥lib¥middleware.js:30:5)

でule \ express \ node_modules \ connect \ lib \ proto.js:190:15)

答えて

15

これは、 'views'(複数形)ではなく 'view'(単数形)の設定ミスであると思います。この例を確認してください。私は、明示的なアプリケーションオブジェクトは、 'ビュー'と 'ビュー'の両方の設定を持っていると思いますが、それらは異なることを意味します。

https://github.com/visionmedia/express/blob/master/examples/jade/index.js

ここで明確にするためにあなたの修正があります:問題のようです

app.set('views', __dirname + '/app/view'); 
+0

うん、。もちろん、私はインデントのための新しいエロルを持っています。しかし、私はそれを修正することができます。私は 'views'が私のディレクトリ名と一致することを前提としていました。私は間違っていたと思います。とにかく助けてくれてありがとう。 –

+0

ええとTJは最初は非常に混乱していますが、一度それから簡潔です。 'app.get'、' app.use'、 'app.configure'はループのnoobsを投げます。これはちょうど 'app.set( 'viewPath')' IMHOでなければなりません。また、 'app.configure'ラッパーを正確にジャックスクワットを達成するように削除することもできます。 –

関連する問題