我已经构建了在我的Express应用程序中使用的身份验证中间件。 现在我想使用相同的Sails中间件。但是,当它在Sails中使用时,我无法从中访问节点env。中间件住policies/auth.js
文件夹下:process.env.NODE_ENV在配置和策略中有两个不同的值
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
时,即使它在Sails配置文件和应用程序文件中“测试”,它也是dev
。
编辑:该应用程序在正确的环境中运行,当帆后的主应用程序文件I console.log(process.env.NODE_ENV)
解除我看到test
但是在它的不确定(回退到dev
)在中间件同一时间。
EDIT2:我刚刚意识到env
等于dev
因为process.env.NODE_ENV
等于dev
(不是因为|| 'dev'
),所以,如果我console.log
NODE_ENV
在帆的任何部分配置是test
但如果我是CONSOLE.LOG在policies/auth.js
是dev
EDIT3:应用与optimist
提升:
require('sails').lift(require('optimist').argv);
你可以访问它(否则你会得到一个错误消息),但'NODE_ENV'似乎是未定义的。 – str
NODE_ENV在风帆中没有合理的原因。你可以尝试在你的第一个控制台日志之后将它设置为任何字符串,并让我们知道你以后是否仍然在你的模块中获得'dev'。 –
@ChristopheAugier无论我分配给它的值如何,它始终是'policies'文件夹中的'dev',并且在'config'文件夹中始终具有正确的值 –