I just started learning Node, and I'm trying to build a web application using Node and Express. And I have the following code in my app.js file with the following directory structure.
Directory structure:
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');
After running the node app command and switching to localhost: 3000. I get the following error. I assume that he does not like the line in that line - res.render('index', {title: 'express'}); . However, from everything I've found on Google, this seems to be correct. So I have to miss something else.
ERROR MESSAGE:
TypeError: the string is not a function in Function.app.render (C: \ myapp \ express \ node_modules \ express \ lib \ application.js: 488: 12) on ServerResponse.res.render (C: \ myapp \ express \ node_modules \ express \ lib \ response.js: 803: 7) in C: \ myapp \ express \ app.js: 19: 6 on callbacks (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js : 164: 37) with the parameter (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js: 138: 11) when forwarding (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index .js: 145: 5) in Router._dispatch (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js: 173: 5) in Object.router (C: \ myapp \ express \ node_modules \ express \ lib \ router \ index.js: 33: 10) next time (C: \ myapp \ express \ node_modules \ express \ node_modules \ connect \ lib \ proto.js: 190: 15) in Object.expressInit [as a handle ] (C: \ myapp \ express \ node_modules \ express \ lib \ middleware.j s: 30: 5)
source share