2017-01-15 5 views
1

私は秘密の文字列を必要とするライブラリを使用しています。私はそうのような私のノード変数を設定しました:ノード環境変数が文字列としてアプリケーション内で読み取られない

export JWT_SECRET=e177920e88165bd0090b1c6b544cf7 

をしかし、私はそうのように、私のアプリでそれを使用しようとすると:それは秘密でなければなりませんというエラーが当たる

const jwt = require('jsonwebtoken'); 

function userToken(user) { 
    return jwt.sign({ 
    user: user.id, 
    }, process.env.JWT_SECRET); 
} 

文字列またはバッファ。私はノード変数が文字列だと思っていたので、何が問題なのか分かりません。ありがとう。

+0

nodejsに環境変数を設定するには、次のようにしてください: 'process.env ['VARIABLE'] = 'value';'このコードでは、vlaueは文字列として定義する必要があります – farhadamjady

答えて

0

この

process.env [ 'JWT_SECRET'] = 'e177920e88165bd0090b1c6b544cf7' のようenvoirment変数を設定してみてください。

か、またはこのよう:

var envs = require('envs'); 

// If NODE_ENV is not set, 
// then this application will assume it's prod by default. 
app.set('environment', envs('NODE_ENV', 'production')); 

// Usage examples: 
app.set('ga_account', envs('GA_UA')); 
app.set('nr_browser_key', envs('NEW_RELIC_BROWSER_KEY')); 
app.set('other', envs('SOME_OTHER_TOKEN)); 
0

うーん、これは私のために正常に動作します。おそらく、console.log(process.env.JWT_SECRET)を追加して、env varが正しくロードされていることを確認してください。

また、dotenvのような環境変数管理ライブラリの使用を検討します。それはあなたのENVを追跡するために、それははるかに簡単になり

JWT_SECRET="abc" 
OTHER_ENV_VAR="def" 

:)

0

はうわー、私は持っていたことに気づいたVAR:それはあなたのような.envファイルで環境変数のすべてを保存することができます私の端末のためにいくつかの異なるウィンドウが開きました。 process.env.JWT_SECRETにアクセスするには、アプリケーションを実行していたウィンドウ内に変数を設定する必要がありました。

関連する問題