我已經構建了在我的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'文件夾中始終具有正確的值 –