Как правильно настроить Coffeescript с Node.js
Я пытаюсь определить некоторые маршруты Node с помощью Coffeescript следующим образом:
Мой файл app.js:
/**
* 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'));
});
Мой файл ways.coffee (находится на том же уровне, что и app.):
routes = (app) ->
app.get '/login', (req,res) ->
res.render "views/login",
title: 'Login'
stylesheet: 'login'
module.exports = routes
Моя проблема:
1, когда я пытаюсь запустить приложение узла - я получаю:
module.js:340
throw err;
^
Error: Cannot find module './routes'
Если я явно укажу суффикс.coffee: require('./rout.coffee')(app); - Я получил:
routes = (app) ->
^
SyntaxError: Unexpected token >
Как правильно это сделать, пожалуйста?
1 ответ
Решение
В CoffeeScript 1.7 строка require('coffee-script')
больше не позволяет запрашивать файлы CoffeeScript. Вместо этого вам нужно либо:
require('coffee-script/register')
или же
require('coffee-script').register()
Смотрите документацию.