Экспресс-команда не найдена

138

По какой-то причине после глобальной установки Express на моем компьютере, npm install -g expressесли я вхожу cdв каталог и пытаюсь запустить экспресс, я получаю следующую ошибку:

express: command not found. 

Даже если я запустил его, sudoя все равно получу тот же результат. Я пробовал несколько разных решений этой проблемы, но ничего не помогло. Я установил узел, через homebrewкоторый некоторые потоки в Stack Overflow указали, что это могло быть проблемой, поэтому я полностью удалил узел и переустановил его через установщик на nodejs.org (теперь я использую v0.10.26), и проблема все еще сохраняется.

Если я захожу в свой /usr/local/lib/node_modulesэкспресс, он там, но в / usr / local / bin нет ничего, что касается Express. Я не уверен, проблема это или нет, но, учитывая, что в этом каталоге есть двоичные файлы для других глобально установленных пакетов узлов, я думаю, что там что-то не так.

Это точный результат, который я получаю при установке:

npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/accepts/1.0.0
npm http GET https://registry.npmjs.org/type-is/1.0.0
npm http GET https://registry.npmjs.org/range-parser/1.0.0
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/fresh/0.2.2
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/send/0.2.0
npm http GET https://registry.npmjs.org/methods/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.3
npm http GET https://registry.npmjs.org/utils-merge/1.0.0
npm http GET https://registry.npmjs.org/merge-descriptors/0.0.2
npm http GET https://registry.npmjs.org/escape-html/1.0.1
npm http GET https://registry.npmjs.org/serve-static/1.0.1
npm http GET https://registry.npmjs.org/qs/0.6.6
npm http GET https://registry.npmjs.org/path-to-regexp/0.1.2
npm http GET https://registry.npmjs.org/parseurl/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/type-is/1.0.0
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/methods/0.1.0
npm http 304 https://registry.npmjs.org/accepts/1.0.0
npm http 304 https://registry.npmjs.org/range-parser/1.0.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.3
npm http 304 https://registry.npmjs.org/fresh/0.2.2
npm http 304 https://registry.npmjs.org/serve-static/1.0.1
npm http 304 https://registry.npmjs.org/qs/0.6.6
npm http 304 https://registry.npmjs.org/utils-merge/1.0.0
npm http 304 https://registry.npmjs.org/merge-descriptors/0.0.2
npm http 304 https://registry.npmjs.org/escape-html/1.0.1
npm http 304 https://registry.npmjs.org/path-to-regexp/0.1.2
npm http 304 https://registry.npmjs.org/parseurl/1.0.1
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/send/0.2.0
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/send/0.1.4
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/negotiator
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/send/0.1.4
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/fresh/0.2.0
npm http 304 https://registry.npmjs.org/negotiator
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/fresh/0.2.0
express@4.0.0 /usr/local/lib/node_modules/express
├── methods@0.1.0
├── parseurl@1.0.1
├── utils-merge@1.0.0
├── merge-descriptors@0.0.2
├── escape-html@1.0.1
├── debug@0.8.0
├── cookie-signature@1.0.3
├── range-parser@1.0.0
├── fresh@0.2.2
├── qs@0.6.6
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── path-to-regexp@0.1.2
├── type-is@1.0.0 (mime@1.2.11)
├── send@0.2.0 (mime@1.2.11)
├── serve-static@1.0.1 (send@0.1.4)
└── accepts@1.0.0 (negotiator@0.3.0, mime@1.2.11)
Тони Барсотти
источник

Ответы:

363

С выпуском Express 4.0.0 это похоже на необходимость sudo npm install -g express-generator.

PeterVC
источник
3
Это сработало, большое спасибо за вашу помощь! Этой ночью я была готова вырвать волосы.
Тони Барсотти
2
sudo не требуется для упомянутых аргументов и все равно будет работать. stackoverflow.com/questions/4938592/…
StanleyZheng
4
Облом, даже официальная документация не упоминает об этом. ;-)
Азат
Как вы его нашли, если этого нет в документации, как нам об этом узнать?
Startec
1
Официальные документы FWIW упоминают об этом [сейчас?] - expressjs.com/starter/generator.html
Стивен Р. Лумис
34

Вам нужно запустить:

npm install -gd express-generator

Оригинальный экспресс с cli, теперь cli разделен на отдельный пакет экспресс-генератора. Первоначально созданный проектом запускает экспресс-узел app.js, поскольку соответствующий код httpserver в app.js, а теперь эта часть кода в каталоге проекта bin/wwwниже, app.js сохраняет только код логики приложения, вам необходимо запустить bin/www. Изменяется только очень простое приложение и версия зависимости пакета доработки.

слезоточивый
источник
2

У меня была эта проблема несколько дней. После глубокого поиска я узнал, что нужно читать все доступные ресурсы, особенно из родительского источника [в данном случае EXPRESSJS.COM]. Вот быстрое решение.

Начиная с версии 4.0+, вам не обязательно устанавливать экспресс-генератор, если вы используете Node 8.2+. Просто беги

npx express-generator

Экспресс-генератор будет работать точно так же, как и при запуске:express

Подробнее см. Начало работы.

Удачных часов чтения и исследований.

HilmaStac
источник
1

Я недавно пытался установить экспресс-генератор, но он выдавал,

$ zsh : command not found : express

Это было после того, как я сделал

$ sudo npm install -g express
$ sudo npm install -g express-generator

Но потом я увидел консольный журнал команды установки npm

/usr/local/Cellar/node/13.1.0/bin/express -> /usr/local/Cellar/node/13.1.0/lib/node_modules/express-generator/bin/express-cli.js

который намекнул, что исполняемый файл express находится в папке bin.

Итак, решение: откройте ~ / .zshrc или ~ / .bashrc и экспортируйте путь следующим образом:

export PATH=/usr/local/Cellar/node/13.1.0/bin:$PATH

Теперь это работает.

TheSYNcoder
источник