我需要启动名为“Node.js”的 Node.JS (JavaScript) 脚本,但 Windows 不允许我这样做。当我在同一个文件夹中输入命令时node Node.js
,我的文件会使用默认编辑器打开...如何覆盖此功能并使命令在启动队列中排在第一位,文件排在第二位。
答案1
这确实是奇怪的行为。这看起来像是一个与 Windows 解析命令行以进行执行的顺序有关的错误。也许不是。。我不知道程序员的意图是什么。
简单的解决方案,在节点后使用.exe(如“node.exe node.js”)或将脚本重命名为非node.js。
我不能完全地解释一下,但我确实明白这里发生了什么。
当您运行 node node.js 时,“.js”被列为 Windows 可以执行的程序类型。在命令行中输入,echo %PATHEXT%
您会在该列表的某个位置找到“;.JS”。
当您在 Windows 中运行某些程序并且不提供扩展名时,Windows 将检查此 PATHEXT 列表以查看要执行的操作。它似乎忽略了顺序,并在转到路径之前查找最后 .EXE(错误?)和本地目录。
如果你正在运行的东西在列表中,它会在注册表中查找要运行的东西的关联。在这种情况下,.JS在窗口中与您的编辑器关联。
我怎么知道?我遇到了和你一样的问题,重现了这个错误,所以很容易弄清楚。
如果我
node node.js
这样做,它会使用命令行“webstorm64.exe node node.js”启动 webstorm。Webstorm 是我的 .js 文件默认设置。另外,请注意额外的(愚蠢的)节点传递给它...调用时
node.exe node.js
,Windows 不会尝试查找 .JS 文件的文件关联,一切运行正常。编辑我的后路径文本列表不包含 .JS,问题也消失了。您可以使用 Windows 环境编辑 PATHEXT。
具体来说,如果“如何覆盖此功能并使命令在启动队列中排在第一位,文件排在第二位”.. 我尝试重新排列 PATHEXT 变量,但无济于事。我真的无法告诉你它在幕后做了什么。也许是因为指定了多个名为“node”的文件,所以它改用了 JS 文件??我不知道。