node shebang が Angular CLI では機能するのに、私のファイルでは機能しないのはなぜですか?

node shebang が Angular CLI では機能するのに、私のファイルでは機能しないのはなぜですか?

インターネットでは、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

を実行すると、ngWindows はパス上ですべての実行可能ファイル形式 ( exe、、batなどcmd) を検索し、最初に一致したファイルを実行しました: ng.cmd

nodeスクリプトを実行する場合は、 への引数として実行するかnode testtest.cmd同じことを実行するファイルを作成する必要があります。

関連情報