Node.js范围错误
我收到以下错误:
/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)
尝试将(应用)variables传递给以下需要:
/** * 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')); });
在以下文件中使用应用程序variables:
routes = (app) -> app.get '/login', (req, res) -> res.render 'views/login', title: 'Login' stylesheet: 'login' module.exports = routes
我知道variables作用域是从一个JS文件到另一个不同。 但是为什么下面这行:
require('./apps/authentication/routes')(app);
不通过应用程序variables?
CoffeeScript对缩进非常敏感。 这个代码应该工作:
routes = (app) -> app.get '/login', (req, res) -> res.render 'views/login', title: 'Login' stylesheet: 'login' module.exports = routes
就在这儿:
ReferenceError: app is not defined at Object.<anonymous> (/Users/nblavoie/Desktop/HotPie/HotPie/apps/authentication/routes.coffee:6:3)
错误不在app.js
,在你的CoffeeScript文件中。 看看它正在编译到 :
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
的缩进和它app.get
所有内容):
routes = (app) -> app.get '/login', (req, res) -> res.render 'views/login', title: 'Login', stylesheet: 'login' module.exports = routes