Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to properly set up Coffeescript with Node.js

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?

like image 558
Eugene Goldberg Avatar asked Feb 05 '14 17:02

Eugene Goldberg


People also ask

Is CoffeeScript still maintained?

In ES6, JavaScript also added many powerful new features and also had a larger community. As of today, January 2021, CoffeeScript is almost dead on the market.

Should you use CoffeeScript?

CoffeeScript is something that makes even good JavaScript code better. CoffeeScript compiled code can do everything that natively written JavaScript code can, only the code produced by using CoffeeScript is way shorter, and much easier to read.


1 Answers

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.

like image 178
Aaron Dufour Avatar answered Oct 14 '22 00:10

Aaron Dufour