How to properly set up Coffeescript with Node.js
coffeescript, express, node.js
Solution
In CoffeeScript 1.7, the line `require('coffee-script')` no longer allows you to require CoffeeScript files. Instead, you need to either:
require('coffee-script/register')
or
require('coffee-script').register()
See the documentation.
Problem
I'm trying to define some Node routes using Coffeescript in the following way: My app.js file: ``` /** * Module dependencies. */ require('coffee-script'); var express = require('express'); var http = require('http'); var path = require('path'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } require('./routes')(app); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); ``` My routes.coffee file (located at the same level as app.'s): ``` routes = (app) -> app.get '/login', (req,res) -> res.render "views/login", title: 'Login' stylesheet: 'login' module.exports = routes ``` My issue are: 1 when I try to run node app - I get: ``` module.js:340 throw err; ^ Error: Cannot find module './routes' ``` If I explicitly specify the .coffee suffix: require('./routes.coffee')(app); - I get: ``` routes = (app) -> ^ SyntaxError: Unexpected token > ``` What is the proper way of doing this, please?