javascript - Express JS 无法识别环境

标签 javascript node.js express environment-variables

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

应用/ 配置/ 应用程序.js 环境.js 服务器.js

每当我开始运行我的 app.js 文件时,它都会让我的服务器以未定义状态启动。 这是代码的要点。

Gist Codes

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);
    });
};

Node 服务器.js

输出

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

最佳答案

默认情况下,process.env.NODE_ENV 是未定义的。如果您在测试环境中运行 Node ,例如 (NODE_ENV=test node app.js),您将不会遇到该问题。

我建议您在 module.exports 函数中添加这一行:

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

关于javascript - Express JS 无法识别环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18993256/

相关文章:

javascript - 过滤数据 - 如何在 JavaScript 中过滤不需要的数据

node.js - Loopback.io 休息连接器 - json post 不起作用

javascript - 如何使用 Google Maps API v3 突出显示地址?

javascript - 从选择中排除元素

javascript - 如何使用 JavaScript 迭代 XML 文件并在 HTML 网页中显示数据?

node.js - Mongoose .js : _id of embedded document

node.js - Nodejs + ExpressJS 中的类成员继承

javascript - 为什么我的指令中的 ngModelCtrl.$dirty 没有更新?

c# - 实时分析数据

javascript - 使用bulkDelete时出现 promise 拒绝错误