5

起動時にコマンドライン引数をMeteorアプリに渡したいのですが。

たとえば、-dev、-test、または--prodは、dev、test、またはprod環境で実行されているかどうかを示します。その後、起動時などにさまざまなリソースをロードできます。

/server/server.jsでこのようなことを試しました

var arguments = process.argv.splice(2);
console.log('cmd args: ' + JSON.stringify(arguments,0,4));

私はテストを実行しました。そして、ランダムなコマンドライン引数を持つ他のかなりの数。

meteor --dev

コンソールの出力はこれだけです。

cmd args: [
    "--keepalive"
]

コマンドライン引数をMeteorアプリに取り込むための最良の方法は何ですか?

または、これはより高いレベルの問題を解決するための正しい方法でさえありますか?そうでない場合は、実行中のenviroを区別するというこの問題を解決する正しい方法は何ですか?

4

2 に答える 2

7

Meteorは、コマンドライン引数を認識していない場合、アプリに転送しません。複数の可能性があります:

  1. の一部を書き換えて、meteor.js認識されない引数を転送します。これはそれほど難しいことではありませんが、きれいな解決策ではありません。そして、更新が発生した場合、問題が発生します。:D
  2. 小さな構成ファイルを作成し、そこにある構成オプションに基づいてアプリの動作を変更できます。この質問を見てください。
  3. 最も簡単な方法は、環境変数を使用することです。このようなノードでenv変数を読み取ることができます。その後、「express.js」の方法でアプリを起動できます。$ METEOR_ENV=production meteor

私はあなたを助けることができると思います!:)

于 2012-05-07T08:03:45.413 に答える
1

それが機能しない理由は、meteorコマンドがプロキシ(指定した引数を取得する)を開始してから、meteorアプリを。で開始するためです--keepalive

process.argvMeteorをビルドして実行すると、正しい値にmeteor build --directory /my/build/pathなります。

于 2014-12-11T15:01:29.993 に答える