我收到以下错误:
/Users/nblavoie/Desktop/HotPie/HotPie/apps/authentication/routes.coffee:6
app.get('/login', function(req, res) {
^
ReferenceError: app is not defined
at Object.<anonymous> (/Users/nblavoie/Desktop/HotPie/HotPie/apps/authentication/routes.coffee:6:3)
at Object.<anonymous> (/Users/nblavoie/Desktop/HotPie/HotPie/apps/authentication/routes.coffee:15:4)
at Module._compile (module.js:449:26)
at Object.require.extensions..coffee (/Users/nblavoie/Desktop/HotPie/HotPie/node_modules/coffee-script/lib/coffee-script/coffee-script.js:22:21)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/Users/nblavoie/Desktop/HotPie/HotPie/app.js:31:1)
at Module._compile (module.js:449:26)
尝试将(app)变量传递给以下要求时:
/**
* Module dependencies.
*/
require('coffee-script');
var express = require('express')
, http = require('http')
, path = require('path');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
// Routes
**require('./apps/authentication/routes')(app);**
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
使用以下文件中的app变量:
routes = (app) ->
app.get '/login', (req, res) ->
res.render 'views/login',
title: 'Login'
stylesheet: 'login'
module.exports = routes
我知道变量范围从一个JS文件到另一个JS文件是不同的。但为什么以下行:
require('./apps/authentication/routes')(app);
不通过app变量?
答案 0 :(得分:4)
就在这里:
ReferenceError: app is not defined
at Object.<anonymous> (/Users/nblavoie/Desktop/HotPie/HotPie/apps/authentication/routes.coffee:6:3)
错误不在app.js
中,它在您的CoffeeScript文件中。查看what it's compiling to:
var routes;
routes = function(app) {};
app.get('/login', function(req, res) {
return res.render('views/login', {
title: 'Login',
stylesheet: 'login'
});
});
module.exports = routes;
请注意routes
是一个空函数?是的,你错过了缩进。将CoffeeScript更改为以下内容应该修复它(注意app.get
的缩进及其后的所有内容):
routes = (app) ->
app.get '/login', (req, res) ->
res.render 'views/login',
title: 'Login',
stylesheet: 'login'
module.exports = routes
答案 1 :(得分:3)
CoffeeScript对缩进非常敏感。这段代码应该有效:
routes = (app) ->
app.get '/login', (req, res) ->
res.render 'views/login',
title: 'Login'
stylesheet: 'login'
module.exports = routes