0

我正在使用带有 ejs 的 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'
},

最后,视图文件(view/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>

我想我已经尽力了。请帮我一把。谢谢!

4

1 回答 1

1

在您的控制器中,您的signup路线是错误的。您必须打电话res.render而不是res.view跳过res.send电话。目前你只返回一个字符串,当然这不起作用......

它应该是这样的

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

signup您的视图在哪里( signup.ejs,但您不必提供扩展名,因为 Express 会根据配置的视图引擎自动知道要使用哪个扩展名)。

于 2013-08-06T12:14:33.647 回答