我需要啟動名為「Node.js」的 Node.JS (JavaScript) 腳本,但 Windows 不允許我這樣做。當我在同一資料夾中並輸入 command 時node Node.js
,我的檔案將使用預設編輯器開啟...如何覆蓋此功能並在啟動佇列中首先建立命令,然後再建立檔案。
答案1
這確實是一種古怪的行為。它看起來像是一個與視窗解析命令行以執行的命令有關的錯誤。也許不是......我不知道程式設計師的意圖是什麼。
簡單的解決方案是,在節點後面使用 .exe(如“node.exe node.js”)或將腳本重命名為不是 node.js。
我不能完全地解釋一下,但我確實明白這裡發生了什麼事。
當您執行節點node.js時,「.js」被列為Windows可以執行的程式類型。從命令列中鍵入,echo %PATHEXT%
您將在該清單中的某處找到“;.JS”。
當您在 Windows 中執行某些內容且不提供副檔名時,Windows 將檢查此 PATHEXT 清單以查看要執行的動作。看起來它忽略了順序,並在轉到路徑之前查找 .EXE 最後(錯誤?)和本地目錄。
如果您正在執行的程式在清單中,它將在登錄中尋找要執行的程式的關聯。在這種情況下,.JS在 Windows 中與您的編輯器相關聯。
我怎麼知道?我遇到了與您重現此錯誤相同的問題,因此很容易弄清楚。
如果我
node node.js
這樣做了,它會使用“webstorm64.exe node node.js”命令列啟動 webstorm。 Webstorm 是我預設的 .js 檔案。另外,請注意額外的(愚蠢的)節點傳遞給它...當呼叫 時
node.exe node.js
,Windows 不會嘗試尋找 .JS 檔案的檔案關聯,而且一切正常。編輯我的後路徑文字列表不包含.JS,問題也消失了。您可以使用 Windows 環境編輯 PATHEXT。
具體來說,如果“如何覆寫此功能並在啟動佇列中先執行命令,然後再執行檔案”..我嘗試重新排列 PATHEXT 變數但無濟於事。我真的無法告訴你它在幕後做了什麼。也許是因為指定了多個名為“node”的文件,所以它與 JS 文件一起使用?我不知道。