1

Интернет говорит мне, что 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 ответ1

2

Из вашего вывода о том, where ng ясно, что происходит.

Windows не поддерживает строки Шебанга, поэтому прочитанное вами верно. Что поддерживает Windows, так это расширения файлов, и у вас есть доступное расширение.

У вас есть ng , но она не запускается непосредственно. ng.cmd почти наверняка является командным файлом, который запускает node ng .

Когда вы запускаете ng Windows ищет ваш путь для всех возможных форматов исполняемых файлов (exe , bat , cmd и т.д.) И запускает первый, который соответствует: ng.cmd .

Если вы хотите запустить свой скрипт, вам придется либо запустить его в качестве аргумента для node , то есть node test , либо создать файл test.cmd который делает то же самое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .