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
- 如何在Ubuntu上正确安装最新版本的CoffeeScript(12.04)
- Javascript和承诺与Q – 封闭的承诺问题
- GruntJS + contrib-coffee:编译但保持文件夹结构
- 无法在nodejs上运行coffeescript应用程序。 接收exception
- Coffeescript和node.js混淆。 需要实例化类?
- 为什么茉莉花节点没有find我的规格文件?
- 如何在coffeescript文件中使用node.js模块的“nodeunit”
- 从模型创build对象时。 该对象是未定义的
- node-orm同步到Alter Tables(类似于DataMapper.auto_upgrade)