インターネットでは、Windows はシェバン行をサポートしていないと聞いていますが、どうやら Angular はそれを使用しており、動作しているようです。それを使用して Windows で動作するファイルの例: : :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)
CMD を開いて、そのファイルがあるディレクトリに移動して単純に実行するとng
、Windows はそれをノードで実行する必要があることを認識して実行します (推測ですが) node ng
。しかし、自分のファイルでそれを試しても、うまくいきません。そのようなファイルの例:
#!/usr/bin/env node
'use strict';
console.log("logging test");
そのファイルを として保存してtest
実行すると、次のメッセージが表示されます'test' is not recognized as an internal or external command, operable program or batch file.
。なぜでしょうか?
出力where ng
:
C:\Users\Dread\AppData\Roaming\npm\ng
C:\Users\Dread\AppData\Roaming\npm\ng.cmd
答え1
出力からwhere ng
何が起こっているかは明らかです。
Windows はシバン行をサポートしていないため、あなたが読んだ内容は正しいです。Windows がサポートしているのはファイル拡張子であり、実行可能拡張子は利用可能です。
あなたするありますng
が、直接実行されていません。 は、ng.cmd
実行されるバッチ ファイルである可能性が非常に高いですnode ng
。
を実行すると、ng
Windows はパス上ですべての実行可能ファイル形式 ( exe
、、bat
などcmd
) を検索し、最初に一致したファイルを実行しました: ng.cmd
。
node
スクリプトを実行する場合は、 への引数として実行するかnode test
、test.cmd
同じことを実行するファイルを作成する必要があります。