2013-08-06 18 views
0

我正在用ejs(都是最新版本)使用node.js構建測試網頁。 順便說一句,每當我運行服務器,它會顯示我下面的錯誤消息。使用ejs Web應用程序的node.js一直向我顯示參考錯誤

ReferenceError: /Users/xxxxxxxx/Project/workspace/nodesails/views/user/signup.ejs:28 
    26| 
    27|   <ul> 
>> 28|    <% _.each(users, function(user) { %> 
    29|    <li><%= user.name %> : <%= user.content %></li> 
    30|    <% }) %> 
    31|   </ul> 

users is not defined 
    at eval (eval at <anonymous> (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/ejs/lib/ejs.js:236:14), <anonymous>:29:3642) 
    at eval (eval at <anonymous> (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/ejs/lib/ejs.js:236:14), <anonymous>:29:4048) 
    at /Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/ejs/lib/ejs.js:249:15 
    at Object.exports.render (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/ejs/lib/ejs.js:287:13) 
    at Object.exports.renderFile (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/ejs/lib/ejs.js:317:20) 
    at View.module.exports [as engine] (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/ejs-locals/index.js:85:7) 
    at View.render (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/express/lib/view.js:76:8) 
    at Function.app.render (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/express/lib/application.js:506:10) 
    at ServerResponse.res.render (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/node_modules/express/lib/response.js:756:7) 
    at renderView (/Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/lib/hooks/views/index.js:298:20) 
    at /Users/xxxxxxxx/Project/workspace/nodesails/node_modules/sails/lib/hooks/views/index.js:280:20 
    at Object.oncomplete (fs.js:107:15) 

控制器(UserController.js)是如下

var data = [ 
    {name: "Test 1", content:"xxxxxxxxxxxxxx"}, 
    {name: "Test 2", content:"zzzzzzzzzzzzzz"}, 
    {name: "Test 3", content:"yyyyyyyyyyyyyy"} 
]; 

module.exports = { 

    add: function(req, res) { 
     res.send('Add a user'); 
    }, 

    remove: function(req, res) { 
     res.send('Remove a user'); 
    }, 

    signup: function(req, res) { 
     res.send('Signup here'); 

     return res.view({users: data}); 
    } 
}; 

,這是routes.js

'/user/signup': { 
    view: 'user/signup' 
}, 

,最後,該視圖的文件的一部分(圖/ user/signup.ejs)是

<div class="container clearfix"> 
    <div class="main"> 
     <h1 id="main-title">Register Here!</h1> 

     <ul> 
      <% _.each(users, function(user) { %> 
      <li><%= user.name %> : <%= user.content %></li> 
      <% }) %> 
     </ul> 
    </div> 
</div> 

我想我已經盡力了。 請給我一個幫助。謝謝!

+0

當呈現視圖時,服務器端是否提供下劃線?我會嘗試刪除「_.each」並使用用戶[0] .name作爲測試,並確保問題是「用戶」集合(我懷疑它是這樣) –

+0

@HectorCorrea謝謝,但我已經嘗試過並沒有工作... – yangsae

+0

你是什麼意思,它沒有工作?您訪問用戶[0] .name時遇到錯誤嗎? –

回答

1

在你的控制器中,你的signup路由是錯誤的。您必須致電res.render而不是res.view,並跳過res.send呼叫。目前你只返回一個字符串,當然這不工作...

它應該是如

module.exports = { 
    // ... 
    signup: function(req, res) { 
    res.render('signup', { users: data }); 
    } 
}; 

其中signup是你的看法(signup.ejs,但是你沒有以提供擴展,因爲Express根據配置的視圖引擎自動知道使用哪個擴展)。

+0

不幸的是它會返回一個相同的錯誤,實際上我已經試過了。 – yangsae

+0

這是Sails文檔中的示例代碼,我遵循這一點,但它不起作用。這個版本(0.8.4)有一些錯誤嗎? [鏈接](http://sailsjs.org/#!documentation/views) – yangsae

相關問題