互聯網告訴我 Windows 不支援 shebang 線,但顯然 Angular Cuses 它並且它可以工作。使用它並在 Windows 上運行的文件範例: https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/bin/ng
如果我打開 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 不支援 shebang 行,因此您所讀到的內容是正確的。 Windows 支援的是檔案副檔名,而且您確實有可用的可執行副檔名。
你做有ng
但沒有直接運行。ng.cmd
幾乎可以肯定是一個運行的批次檔node ng
。
當您執行ng
Windows 時,會在您的路徑中搜尋所有可能的可執行檔格式(exe
、bat
、cmd
等)並執行第一個符合的:ng.cmd
.
如果您想運行腳本,則必須將其作為node
ie的參數運行node test
,或建立test.cmd
具有相同功能的檔案。