Node.js errors need some work.

PUBLISHED ON FEB 9, 2014 — IMPORTED FROM TUMBLR, TEXT

Writing this in routes/api.js…

   exports.posts = function(req, res) {
  var posts = [];

data.posts.forEach(function(posts, i) { posts.push({ id: i, title: post.title, text: post.text.substr(0, 50) + ‘…’ }); }); res.json({ posts: posts }); };

exports.posts = function(req, res) { var id = req.params.id; if (id >= 0 && id < data.posts.length) { res.json({ post: data.posts[id] }); } else { res.json(false); } };

[d'oh! Note the two `exports.posts`.]

…and then attempting to run the Node server will through a less than helpful error:

    /Users/b/Desktop/Code/ng-blog/node_modules/express/lib/router/index.js:252
    throw new Error(msg);
          ^
Error: .get() requires callback functions but got a [object Undefined]
    at /Users/b/Desktop/Code/ng-blog/node_modules/express/lib/router/index.js:252:11
    at Array.forEach (native)
    at Router.route (/Users/b/Desktop/Code/ng-blog/node_modules/express/lib/router/index.js:248:13)
    at Router.(anonymous function) [as get] (/Users/b/Desktop/Code/ng-blog/node_modules/express/lib/router/index.js:270:16)
    at Function.app.(anonymous function) [as get] (/Users/b/Desktop/Code/ng-blog/node_modules/express/lib/application.js:414:26)
    at Object. (/Users/b/Desktop/Code/ng-blog/app.js:51:5)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

Line 52 on the top-mentioned file? It’s just calling the function that displays the error. The offending file wasn’t listed anywhere in the stack trace. Once I found where I had gone wrong, the error made sense, but damn if I didn’t spend close to half an hour finding it.

Sexy new technologies sure are sexy, but they lack the polish of more refined tech, especially where it’s needed.