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.js
它dev
EDIT3:应用程序被optimist
取消:
require('sails').lift(require('optimist').argv);
process.env是全局的,你应该可以从节点代码中的任何地方访问它。 设置你的NODE_ENV
types
export NODE_ENV=production sails lift
要么
NODE_ENV=production sails lift
那么它应该可以在节点代码的任何地方访问,因为进程是在节点的全局对象上。