问题描述
我想用以下方式使用Coffeescript定义一些Node路由:
我的app.js文件:
/ **
*模块依赖关系。
* /
require('coffee-script');
var express = require('express');
var http = require('http');
var path = require('path');
var app = express();
//所有环境
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')));
//仅开发
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'));
});
我的routes.coffee文件(位于与应用程序相同的级别):
routes =(app) - >
app.get'/ login',(req,res) - >
res.renderviews / login,
title:'登录'
样式表:'login'
$ b b module.exports = routes
我的问题是:
$ b b
1当我尝试运行节点应用程序 - 我得到:
module.js:340
throw呃;
^
错误:找不到模块./routes
显式指定.coffee后缀:require('./ routes.coffee')(app); - 我获得:
routes =(app) - >
^
语法错误:意外令牌>
这样做的正确方法是什么?
在CoffeeScript 1.7中, require('coffee-script')
不再允许您需要CoffeeScript文件。相反,您需要:
require('coffee-script / register')
或
require script')。register()
请参阅。
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?
解决方案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.
这篇关于如何正确设置Coffeescript与Node.js的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!