process.env.NODE_ENV在configuration和策略中有两个不同的值

我已经构build了我的Express应用程序中使用的身份validation中间件。 现在我想使用相同的Sails中间件。 但是,当它在Sails中使用时,我无法从中访问节点env。 中间件位于policies/auth.js文件夹下:

 var auth = require( 'tb-auth' )( { appName: 'test' } ); module.exports = auth.authenticate; 

它由config / policies.js使用

 module.exports.policies = { '*': 'auth' } 

中间件代码:

 var env = (process.env.NODE_ENV || 'dev'); var config = require( './config/' + env + '.json' ); module.exports = {...}; 

它总是回落到dev 。 我试图访问sails.config.environment但它抛出错误,未定义的sails 。 但是,当我在中间件中访问process.env.NODE_ENV ,即使它在Sailsconfiguration文件和应用程序文件中“testing”,也是dev

编辑:应用程序运行在正确的环境,当我在console.log(process.env.NODE_ENV)在帆后升起的主要应用程序文件,但我看到test但同时它是undefined(回退到dev )中间件。

EDIT2:我只是意识到, env是等于dev因为process.env.NODE_ENV等于dev (不是因为|| 'dev' ),所以如果我console.log NODE_ENV在任何部分的Sailsconfiguration它是test但如果我console.log它在policies/auth.jsdev

EDIT3:应用程序被optimist取消:

 require('sails').lift(require('optimist').argv); 

process.env是全局的,你应该可以从节点代码中的任何地方访问它。 设置你的NODE_ENVtypes

 export NODE_ENV=production sails lift 

要么

 NODE_ENV=production sails lift 

那么它应该可以在节点代码的任何地方访问,因为进程是在节点的全局对象上。