1

I'm struggling to figure this one out and I'm sure it's not this complicated. For some reasonI get the error below from this code:

/*
 * GET home page.
 */

exports.index = function(req, res){
    exec('ls -l ~/Sites/branches | grep "^d"', function (error, stdout, stderr) {
        // var lines = stdout.split("\n");
        // var folder;
        // lines.forEach(function(line){
        //     folder = line.match(/([^\s]+)$/igm);
        //     if (folder!='null') {
        //         sys.puts(folder);
        //     }
        // });
        res.render('index', {
            title: 'Express',
            lines: 'hi'
        });
    });

};

I've commented out the lines where I intend to get the data for lines from and simply set lines to a string. It gives me the error below regardless.

Express
500 ReferenceError: /Users/luisgomez/Desktop/mashlocaldevman/views/index.ejs:10 8| <h1><%= title %></h1> 9| <p>Welcome to <%= title %></p> >> 10| <p>Lines: <%= lines.length %></p> 11| </body> 12| </html> 13| lines is not defined
<%= title %>
Welcome to <%= title %>

Lines: <%= lines.length %>

lines is not defined
at eval (eval at (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:226:12))
at exports.compile (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:228:15)
at Object.exports.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:266:13)
at View.exports.renderFile [as engine] (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/ejs/lib/ejs.js:292:22)
at View.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/view.js:75:8)
at Function.app.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/application.js:504:10)
at ServerResponse.res.render (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/response.js:677:7)
at exports.index (/Users/luisgomez/Desktop/mashlocaldevman/routes/index.js:7:7)
at callbacks (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/router/index.js:165:11)
at param (/Users/luisgomez/Desktop/mashlocaldevman/node_modules/express/lib/router/index.js:139:11)

I'm using simple HTML for the views and the latest version of express. The view renders fine if I remove the 'lines variable from the render call.

Any ideas?

Thank you,

Luis

1
  • did you figure this out? Commented Sep 8, 2012 at 21:18

1 Answer 1

1

If you comment out lines, then lines will not be defined so length cannot be evaluated:

Lines: <%= lines.length %>

If you uncomment that code but for some reason stdout is empty (is stderr populated?) then lines could not be defined as well.

Have you tried checking whether error or stderr !== null and logging it out?

Something like:

function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if (error !== null) {
      console.log('exec error: ' + error);
    }
}
Sign up to request clarification or add additional context in comments.

1 Comment

My bad. I did try the view with just lines instead of lines.length. Note tho that stdout does contain data. sys.puts showed me that earlier. Thanks!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.