Expressアプリケーションで使用する認証ミドルウェアを作成しました。 今私はSails用に同じミドルウェアを使用したいと思います。しかし、Sailsで使用されているときはノードenvにアクセスできません。ミドルウェアはpolicies/auth.js
フォルダの下に住んでいる:process.env.NODE_ENVには、設定とポリシーに2つの異なる値があります
var auth = require('tb-auth')({
appName: 'test'
});
module.exports = auth.authenticate;
そして、それは
module.exports.policies = {
'*': 'auth'
}
ミドルウェアコードのconfig/policies.jsで使われています:
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
になります。
EDIT:帆後のメインアプリファイル内のI console.log(process.env.NODE_ENV)
が、私はしかし、それはミドルウェアに(dev
へのフォールバックを)未定義のと同じ時間にtest
を参照してください持ち上げるときアプリは、正しい環境で実行されます。
EDIT2:は、私はちょうどenv
がdev
(ないため|| 'dev'
)に等しいdev
process.env.NODE_ENV
ために等しくなることに気づいたので、私は帆のどの部分でconsole.log
NODE_ENV
、私はそれをCONSOLE.LOG場合、それはtest
ですが、configの場合アプリoptimist
で持ち上げられた:policies/auth.js
ではdev
EDIT3がある
require('sails').lift(require('optimist').argv);
これにアクセスできます(そうしないとエラーメッセージが表示されます)。しかし、 'NODE_ENV'は未定義です。 – str
セイルでNODE_ENVを変更する理由はありません。あなたの最初のコンソールログの直後にそれをどんな文字列にでも設定して、あなたのモジュールで後で 'dev'を取得した場合はお知らせください。 –
@ChristopheAugier私が割り当てた値にかかわらず、 'policies'フォルダ内の' dev'は常に 'config'フォルダに正しい値を持っています –