3

さて、私はノードに不慣れで、実際にはノードサーバーを使用して静的jsを提供しているだけですが、これに関する情報はどこにも見つかりません。

デプロイ用のノードにビルドされるアプリケーションember app kitserver.jsを実行しており、heroku はそれを で実行しnode server.jsます。

ビルド、テストなどにgruntを使用します。

heroku 構成変数によってオーバーライドできる構成変数 (認証トークンなど) を指定する方法を知りたいです。

私が得ることができた最も近いものは、環境変数を読み取り、サイトに組み込まれる (そしてグローバル変数に割り当てられる) json ファイルを書き出すカスタム タスクです。これはローカルで機能しますが、heroku の構成は考慮されません。

heroku の構成を取得し、それらを環境変数としてローカルにエクスポートし、ビルドを実行するデプロイ スクリプトも作成しましたが、構成は app deployでのみ更新されます。したがって、 を実行すると、次にアプリをデプロイするまで、heroku config:add CONFIG_TEST=test_valueアプリはその値を認識しません。CONFIG_TEST

アプリでその構成値をブラウザー JS にすぐに埋め込み始めたいと思います。

アプリのセットアップ方法でノードを使用してこれを行う方法はありますか?

4

2 に答える 2

1

実行時に環境から構成変数を単純に取得することの何が問題なのか、私にはよくわかりません。コードで process.env.KEY を使用し、その結果を任意のテンプレートに埋め込み、それを結果として提供します。

Heroku 構成変数を変更すると、プロセスが再起動されるため、新しい値が取得されます。

問題は、静的ファイルを提供するという事実ですか? もしそうなら、それを変更して、提供する前にテンプレート エンジンを使用して何らかの処理を行うようにできますか?

于 2013-08-14T06:51:11.860 に答える
0

OK、これは grunt-sed を使用した ember-app-kit のソリューションです。

EMBER_APP_KIT_PROJECT/tasks/options/sed.js 内

のようなものを追加

module.exports = {
    version: {
        path: "./dist/",
        pattern: '{{env.API_BASE_PATH}}',
        replacement: function(){
            return process.env.API_BASE_PATH;
        },
        recursive: true
    }
};

次に、コードに入れるだけです

"{{env.API_BASE_PATH}}"

今、あなたが走るとき

$ grunt sed 

「{{env.API_BASE_PATH}}」を環境変数にあるものに置き換えます。

于 2014-02-07T00:27:27.077 に答える