2016-03-26 9 views
4

Expressアプリケーションジェネレータ(here)の開始ページに、MacOSまたはLinuxを使用している場合は$ DEBUG=myapp:* npm startを使用してサーバを起動するように指示されています。'DEBUG = myapp:* npm start'が実際に実行していることの説明

これはうまくいきますが、この行が実際に何をしているのか理解できません。私はそれが変数DEBUGに何かを割り当てると推測していただろうが、サーバを終了した後にecho $DEBUGを実行して何も印刷しなかった。私は:が何とかここに鍵を握っていると推測していますが、それはどういうわけか理由はわかりません。

誰かが私のためにこれを打ち破ってくれることを願っています。

+0

chepnerは言った、「:」は値の一部です。 –

+2

私は同じ疑いがあります。その使用法を説明することなく、多くの人がドキュメントをコピーしました。 – shijin

答えて

2

私はこれが実際よりもはるかに複雑であると思っていました。 Chepnerの答えは、私の頭の中にいくつかの歯車が残っていた。

私は DEBUG変数を出力するPythonスクリプトを作成し、これは myapp:*を印刷し、 npm start

$ DEBUG=myapp:* python printvar.py

案の定するのではなく、それを呼びました。私が欠けていた大きな部分は、変数割り当て後のスペースがコマンド間の区切り文字として使用され、:*は、DEBUGに割り当てられる変数の一部であるテキストに過ぎないということでした。

+0

なぜmyappの最後に*を追加したいのですか? –

1

これは一時的な割り当てです。 npmは、その環境で割り当てられた値を認識しますが、現在のシェルには影響しません。 DEBUGは、npmが終了した後の値を保持します(または設定されていない状態のままです)。

1

DEBUGnpmとサブプロセスの環境変数として設定されますが、あなたのシェルで設定されていない、このことを考慮してください。あなたの場合

HELLO=World bash -c 'echo $HELLO' # World 
HELLO=World bash -c "bash -c 'echo \$HELLO'" # World 
echo $HELLO # Nothing, assuming that HELLO was null before running the above snippets 

myapp:*が変数DEBUGに割り当てられますが。そして、この変数はnpmの中で利用できるようになります。なぜなら私は答えることができません。

2

DEBUGは、myappアプリケーション内のすべてのデバッガに、セッションの間、ワイルドカード文字*で設定された環境変数です。 DEBUG変数は、 "ライブラリとアプリケーションのための小さなnode.js &ブラウザデバッグユーティリティ"で使用されています。ドキュメントはhereです。

2
  • DEBUG=myapp:* npm startは2つの部分で構成されています。あなたはコマンドラインツールでの最初のDEBUG=myapp:*を実行し、npm startを実行することによって、その後 も

  • 最初の部分はDEBUG=myapp:*であり、第二の部分は、npm start

  • です。

  • DEBUG=myapp:*は、デバッグ目的でログを有効にすることをnodejsに伝えていることを意味します。

    • myappをアプリ名に置き換えることを忘れないでください。パッケージ名は"name"のpackage.jsonファイルにあります。 enter image description here
    • myapp:**は、あなただけのルータの実装からログを見たい場合は、myapp:routerにDEBUGの値を設定エクスプレス
    • で使用されるすべての内部ログを参照することを意味します。同様に、アプリケーション実装からのログのみを表示するには、DEBUGの値をmyapp:applicationに設定します。
  • npm startあなたscriptsはpackage.jsonファイルやスクリプト名に記載された実行するようにNPMを言っているが呼び出されstart enter image description here

  • Source: https://expressjs.com/en/guide/debugging.html

0

:それだけのテキストですenv変数に割り当てられます。

まず、私は特急内部レベルのデバッグメッセージを説明します:ラインがやって、次のようにどのように動作されている何

。 「アプリケーション」レベルDEBUGを見るためには、単に内部ルータ

DEBUG=express:router, npm start 
DEBUG=express.router, npm start 

のためのすべての

DEBUG=express:*, npm start 
DEBUG=express.*, npm start 
DEBUG=express*, npm start 

そして、次の設定が表示さ

同じ内部ログレベルを表示する内部ログレベルのメッセージを設定し、次のenvステートメント。デバッグ機能を使用してコードに追加したもの。

これはモジュールの依存関係と関連があります。デバッグパッケージに渡された値。値は任意の名前で構いません。つまり、package.json、ファイル、オブジェクト変数名などと一致させる必要はありません。しかし、env変数のDEBUG値は、コード内のデバッグパッケージに渡される値に対応する必要があります。

  1. DEBUG = myappに:* NPM
  2. を開始し、我々は次のようなシナリオを実行する場合

    コード

    var debug = require('debug') ('myapp:myapp'); 
    

    のこのラインは、次にこれらの2つのファイル

    www 
    … 
    var debug = require('debug')('myapp:www'); 
    
    app.js 
    … 
    var debug = require('debug')('myapp:app'); 
    

    を考えてみましょうDEBUG = myapp:www npm start

  3. DEBUG = myappに:アプリのNPMは、私たちは次のことを得る

を開始します。

screen shot

[email protected]:~/despobaldo/server$ DEBUG=myapp:* npm start 

> [email protected] start /home/vagrant/despobaldo/server 
> node ./bin/www 

    myapp:app here I am +0ms 
    myapp:www Listening on port 3000 +8ms 
^[email protected]:~/despobaldo/server$ 
[email protected]:~/despobaldo/server$ 
[email protected]:~/despobaldo/server$ DEBUG=myapp:www npm start 

> [email protected] start /home/vagrant/despobaldo/server 
> node ./bin/www 

    myapp:www Listening on port 3000 +0ms 
^[email protected]:~/despobaldo/server$ 
[email protected]:~/despobaldo/server$ 
[email protected]:~/despobaldo/server$ DEBUG=myapp:app npm start 

> [email protected] start /home/vagrant/despobaldo/server 
> node ./bin/www 

    myapp:app here I am +0ms 
^[email protected]:~/despobaldo/server$ 
[email protected]:~/despobaldo/server$ 
[email protected]:~/despobaldo/server$ 

内部、あなたはこのような何かをやってしまう "アプリケーション" レベルのロギングの両方を参照するために:

DEBUG = myapp:*、express:router npm start

screen shot

[email protected]:~/despobaldo/server$ 
[email protected]:~/despobaldo/server$ DEBUG=myapp:*,express:router npm start 

> [email protected] start /home/vagrant/despobaldo/server 
> node ./bin/www 

    express:router use '/' query +0ms 
    express:router use '/' expressInit +4ms 
    express:router use '/' logger +0ms 
    express:router use '/' jsonParser +7ms 
    express:router use '/' urlencodedParser +3ms 
    express:router use '/' cookieParser +0ms 
    express:router use '/' serveStatic +1ms 
    myapp:app here I am +0ms 
    express:router use '/' router +1ms 
    express:router use '/users' router +0ms 
    express:router use '/' <anonymous> +0ms 
    express:router use '/' <anonymous> +0ms 
    myapp:www Listening on port 3000 +7ms 
^[email protected]:~/despobaldo/server$ 
関連する問題