Express JS不能识别环境

我的应用程序文件夹结构是这样的。

app / config / app.js env.js server.js

每当我开始运行我的app.js文件,它给了我服务器启动未定义。 这是代码的要点。

Gist代码

server.js // Module dependencies. var http = require('http'), app = require('./config/app')(); // Start server app.listen(app.get('port'), function(){ console.log('App is Up at '+ app.get('port') + ' as ' + process.env.NODE_ENV); }); config/app.js var express = require('express'), path = require('path'), ejs = require('ejs'); module.exports = function() { var app = express(); var publicDir = path.join(__dirname, '../public'); // Store all environment variables app.set('port', process.env.PORT || 3000); // Basic configuration app.configure(function() { app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(publicDir)); }); // Environment specific configuration require('./env')(app); return app; }; config/env.js var express = require('express'), hbsPrecompiler = require('handlebars-precompiler'), path = require('path'); module.exports = function(app) { // development compile Handlebars and show errors app.configure('development', function(){ app.set('db-uri', process.env.MONGOLAB_URI || 'mongodb://localhost/App'); hbsPrecompiler.watchDir( path.join(__dirname, "../public/templates"), path.join(__dirname, "../public/templates/compiled/templates.js"), ['handlebars', 'hbs'] ); app.use(express.errorHandler()); }); app.configure('production', function(){ app.set('db-uri', process.env.MONGOLAB_URI); }); }; 

节点server.js

产量

 /usr/bin/node app.js App is Up at 3000 as undefined 

默认情况下, process.env.NODE_ENV是未定义的。 如果你在testing环境中运行节点,例如( NODE_ENV=test node app.js ),你不会有这个问题。

我build议你在你的module.exports函数中join这一行:

 if (app.settings.env === 'development') process.env.NODE_ENV = 'development'; 

这看起来不同于您提到的文件夹结构:

 app = require('./config/app')(); 

似乎颠倒了。

这是预期的。 默认情况下没有NODE_ENV环境variables,除非你明确地设置它,所以process.env.NODE_ENV是未定义的。 这没有问题。