web-dev-qa-db-ja.com

流星アプリケーションは、開発環境、テスト環境、または本番環境で実行されているかどうかをどのように認識しますか?

Meteorアプリケーションを開発、テスト、または本番環境として実行する場合は、異なるアカウントプロバイダーの構成を使用する必要があります。

36
jbernab

Meteor 1.3以降、これらのフラグはそのままで機能します。

Meteor.isDevelopment
Meteor.isProduction
Meteor.isTest
Meteor.isAppTest
60
Ziarno

サーバー上:

var inDevelopment = function () {
  return process.env.NODE_ENV === "development";
};

var inProduction = function () {
  return process.env.NODE_ENV === "production";
};

Meteorは、meteorを実行すると、環境変数NODE_ENVを「開発」に設定します。本番環境では、変数を任意の値に設定できます。設定しない場合、デフォルトで「本番環境」になります。

更新:これがクライアントとサーバーで機能するようにスマートパッケージを作成しました。

mrt add allow-env

サーバーファイルに権限ルールを設定するだけです。

allowEnv({
 NODE_ENV: 1
});
32
Neil

Meteor.settings は、--settingsまたはmeteor runの実行時に使用されるmeteor deployオプションと組み合わせて使用​​できます。

たとえば、devモードで実行するには、JSONファイルを作成し、それをmeteorConfigDev.jsonと呼び、次のように記述します。

{
  "public" : {
    "mode" : "dev"
  },
  "anotherProperty" : "anotherValue"
}

を使用してアプリを実行します

meteor --settings meteorConfigDev.json

サーバーとクライアントでは、以下を使用して「モード」にアクセスできます。

Meteor.settings.public.mode //in this case it will be "dev"

「public」の設定はサーバーとクライアントの両方で使用できますが、他のすべて(この場合は「anotherProperty」)はサーバーでのみ使用できることに注意してください。

その後、環境ごとに異なる構成ファイルを作成できます。

18
go-oleg

非常に簡単。私は自分のアプリを5つ(はい、5つ!)の異なる環境で実行しています。以下に示すように、4つの異なる環境でROOT_URLでswitchステートメントを使用するだけです。もちろん、環境が2つしかない場合は、if-elseを使用できます。サーバー上で動作します。 startup.jsという新しいファイルを作成し、以下のコード例を使用するだけです。乾杯!

_switch (process.env.ROOT_URL) {
    case "http://www.production.com/":
       BLOCK OF CODE HERE
       break;
    case "http://www.staging.com/":
       BLOCK OF CODE HERE
       break;
    case "http://www.development.com/":
       BLOCK OF CODE HERE
       break;
    case "http://localhost:3000/":
       BLOCK OF CODE HERE
       break;
}
_

一般に、javascriptのswitchステートメントの形式は次のとおりです。

_switch(expression) {
    case n:
        code block
        break;
    case n:
        code block
        break;
    default:
        default code block
}
_

UPDATE:MeteorはMeteor.absoluteUrl()を提供するようになりました。これは、_process.env.ROOT_URL_に似ていますが、機能が追加されています。 docs を参照してください。

4
FullStack

それを可能にするオープン プルリクエスト がgithubにあります。コメント/投票してください。含まれる可能性が高くなります。

1
Joscha

これを達成するための本当に厄介な方法

https://github.com/possibilities/meteor-environment-hooks

注:インターフェースはOKです私見、実装は厄介です

0
Mike Bannister