web-dev-qa-db-ja.com

環境変数のAPIキーをprocess.envを使用してEmber CLIに渡す方法は?

環境変数をbashrcからEmber CLIに渡す方法。 api-keysをEmber CLIに渡します。

Node.jsを使用してみましたprocess.env両方のbrocfile.jsおよびenvironment.js、しかしEmber JSコントローラーでアクセスしようとすると、プロパティはnullです。

私のenvironment.js追加したファイル、

APP: { apiKey: process.env.KEY }

My Ember JSコントローラーで私はそれにアクセスしようとしました:

import config from  '../config/environment'; 

そして、以下に示すように、コントローラプロパティlkeyを設定しましたが、動作しませんでした:

lkey: config.App.KEY

次に私のbrocfile.js、 追加した:

var limaKey = process.env.Key; 
var app = new EmberApp({key: limaKey});

これはまだ機能しませんでした。

24
brg

私はついにこの問題を解決しました。私は2つの選択肢に直面しました。オプション1は、XHRを使用して、サーバー上のエンドポイントからAPIキーを取得することでした。オプション2は、Nodejs process.envを使用して環境変数から直接APIキーを取得します。オプション2のほうが、XHRリクエストを行う手間が省けるためです。

Nodejs Dotenvプロジェクトに依存するこのember-cli-addOnを使用してオプション2を取得できます

私の場合、アドオンなしで実行することにしました。

  1. Ubuntuまたは自分のLinuxディストリビューションの適切な場所である場合は、最初に.bashrcにAPIキーを追加します。
export API_KEY=NwPyhL5
  1. .bashrcファイルをリロードして、設定が取得されるようにします。
source ~/.bashrc
  1. In Ember CLIはconfig/environment.jsENVオブジェクトにプロパティを追加します。デフォルトは次のようになります
module.exports = function(environment) {
  var ENV = {
     modulePrefix: 'Rails-em-cli',
     environment: environment,
     baseURL: '/',
     locationType: 'auto',
     EmberENV: {

      }
   }

ENVオブジェクトに、次のように新しいプロパティmyApiKeyを追加できます。

module.exports = function(environment) {
  var ENV = {
    modulePrefix: 'Rails-em-cli',
    environment: environment,
    baseURL: '/',
    locationType: 'auto',
    myApikey: null,
    EmberENV: {

     }

   //assign a value to the myApiKey

     if (environment === 'development') {
        // ENV.APP.LOG_RESOLVER = true;

        ENV.myApiKey = process.env.API_KEY;
      }              

   }

process.env.API_KEY.bashrcに追加した設定を取得し、に割り当てていることに注意してください。 myApiKeyprocess.envを機能させるには、サーバーにNodejsをインストールする必要があります。

最後に、コントローラーでその変数にアクセスするには

import config from '../config/environment';
import Ember from 'ember';

export default Ember.Controller.extend({

  yourKey: config.myApikey,

});

それでおしまい。

40
brg

ENV.APPオブジェクトに変数を設定することもできます。変数はアプリケーションインスタンスによって実行されます。

その後、それらを初期化子などで再利用できます。

この方法では、config/environmentをアプリケーションのコードにインポートする必要はありませんが、これは少し奇妙に思えます。

5
Mike Aski

APIキーがチェックインされないようにします。ビルドプロセスの一部として、ローカル構成ファイルをconfigディレクトリにコピーし、environment.jsにロードします。

environment.js

try {
  var local = require('./local_environment');
  Object.keys(local.config).forEach(function(key) {
    ENV[key] = local.config[key];
  });
} catch(err) {
  console.log("config/local_environment.js not found");
}

local_environment.js(チェックインされず、ビルドプロセスによってコピーされます)

exports.config = {
  SOME_API_KEY: 'key_here'
};
3
kielni

重要なことは、config/environment.jsでENV変数を定義することです。どこか(アダプター、コントローラーなど)にアクセスする必要がある場合は、最初にconfig/environment.jsをインポートします。

Ember CLIアプリ、 https://ember-cli.com/user-guide/#Environments については、参考のためにこれを文書化しています。

サンプルロジック:

# app/controllers/foobar.js
import DS from 'ember-data';
import ENV from 'nameOfApp/config/environment';

export default Ember.Controller.extend({
  actions: {
    click: function() {
      console.log(ENV.SOME_ENVIRONMENT_KEY);
    }
  }
});

# config/environment.js
module.exports = function(environment) {
  ....

  if (environment === 'development') {
    ENV.SOME_ENVIRONMENT_KEY = 'asdf1234';
  }

  ...
};
2