我构建了我在Express应用程序中使用的身份验证中间件。
现在我想为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
时,它是dev
,即使它是" test"在Sails配置文件和应用程序文件中。
编辑:该应用在正确的环境中运行,当我在风帆升降后的主应用文件中console.log(process.env.NODE_ENV)
时,我会看到test
但同时它会被dev
在中间件中未定义(回退到env
)。
EDIT2:我刚刚意识到dev
等于process.env.NODE_ENV
,因为dev
等于|| 'dev'
(不是因为console.log
}),所以如果我在Sails配置的任何部分NODE_ENV
test
,它是policies/auth.js
,但是如果我在dev
中控制它。它是optimist
< / p>
EDIT3:应用已取消require('sails').lift(require('optimist').argv);
:
self.arrayPriceList = [NSMutableArray array];
self.dictPriceList = [NSMutableDictionary dictionary];
答案 0 :(得分:0)
process.env是全局的,您应该能够从节点代码中的任何位置访问它。设置NODE_ENV
类型
export NODE_ENV=production
sails lift
或
NODE_ENV=production sails lift
然后它应该可以访问节点代码中的任何位置,因为进程位于节点的全局对象上。