Windows 10 и имя файла «node.js»

Windows 10 и имя файла «node.js»

Мне нужно запустить скрипт Node.JS (JavaScript) с именем "Node.js", но Windows не позволяет мне это сделать. Когда я нахожусь в той же папке и ввожу команду node Node.js, мой файл открывается редактором по умолчанию... Как переопределить эту функциональность и сделать команды первыми, а файлы вторыми в очереди запуска.

решение1

Это действительно странное поведение. Похоже на ошибку, связанную с тем, как windows анализирует командную строку для выполнения. Возможно, это не так.. Я не знаю, что имел в виду программист.

Простое решение: используйте .exe после node (например, «node.exe node.js») или переименуйте скрипт так, чтобы он не был node.js.

Я не могуполностьюобъясните это, но я понимаю, что здесь происходит.

При запуске node node.js, ".js" указан как тип программы, которую может выполнить Windows. В командной строке введите, echo %PATHEXT%и вы найдете ";.JS" где-то в этом списке.

Когда вы запускаете что-то в Windows и не указываете расширение, Windows проверит этот список PATHEXT, чтобы узнать, что делать. Похоже, что он игнорирует порядок и ищет .EXE последним (баг?) и локальный каталог перед переходом по пути.

Если то, что вы запускаете, есть в списке, он будет искать ассоциацию в реестре для того, что нужно запустить. В этом случае,.JSассоциируется в Windows с вашим редактором.

Как я могу это определить? У меня была та же проблема, что и у вас, и я воспроизвел этот баг, что упрощает понимание.

  • Если я node node.jsэто сделал, он запустил webstorm с командной строкой "webstorm64.exe node node.js". Webstorm был моим по умолчанию для файлов .js. Также обратите внимание на дополнительный (глупый)узелперешел к нему...

  • При вызове node.exe node.jsWindows не пыталась найти файловую ассоциацию для файла .JS, и все работало просто замечательно.

  • После редактирования моегоPATHEXTlist не содержит .JS, проблема также исчезла. Вы можете редактировать PATHEXT, используя среду Windows.

В частности, если«Как переопределить эту функциональность и сделать команды первыми, а файлы — вторыми в очереди запуска».. Я пробовал переставить переменную PATHEXT, но безрезультатно. Я не могу сказать вам, что она делает под капотом. Возможно, это потому, что было указано больше одного файла с именем "node", поэтому вместо этого она пошла с файлом JS?? Я не знаю.

Связанный контент