Команда Express не знайдена


137

Чомусь після установки глобально Express на моїй машині, npm install -g expressякщо я cdпотрапив у каталог і намагаюся запустити express, я отримую таку помилку:

express: command not found. 

Навіть якщо я запускаю його, sudoя все одно отримую той самий вихід. Я спробував кілька різних рішень цієї проблеми, і нічого не вийшло. У мене був встановлений вузол, через homebrewякий деякі потоки в переліку переповнення стека можуть бути проблемою, тому я повністю видалив вузол і перевстановив через інсталятор на 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)

Відповіді:


359

З випуском Express 4.0.0 схоже, що вам потрібно зробити sudo npm install -g express-generator.


3
Це спрацювало велике спасибі за вашу допомогу! Я був готовий витягнути волосся за цю минулу ніч.
Тоні Барсотті

2
Судо не потрібно для аргументованих згаданих і все одно працюватиме. stackoverflow.com/questions/4938592 / ...
StanleyZheng

4
Баммер, навіть офіційна документація не згадує про це. ;-)
Азат

Як ви його знайшли, якщо цього немає в документації, як ми повинні про це дізнатися?
Startec

1
Офіційні документи FWIW згадують про це [зараз?] - expressjs.com/starter/generator.html
Стівен Р. Луміс

34

Вам потрібно запустити:

npm install -gd express-generator

Оригінальний експрес із cli, тепер кліп розділився на окремий експрес-генератор. Спочатку створений проектом працює експрес-вузол app.js, оскільки відповідний код httpserver у app.js, а тепер ця частина коду до каталогу проектів bin/wwwнижче, app.js зберігає лише логічний код програми, потрібно запустити bin/www. Просто дуже проста зміна версії залежності пакета програм та вдосконалення.


2

Я відчував цей виклик протягом декількох днів. Після глибокого пошуку я дізнався, що треба читати кожен доступний ресурс, особливо з батьківського джерела [в даному випадку EXPRESSJS.COM]. Ось швидке виправлення.

Починаючи з версії 4.0+, вам не потрібно встановлювати експрес-генератор, якщо ви працюєте з Node 8.2+. Просто бігайте

npx express-generator

Експрес-генератор буде працювати саме так, як він працює при запуску:express

Докладніше див. Початок роботи

Щасливі години читання та дослідження.


1

Я нещодавно намагався встановити експрес-генератор, однак він би видав,

$ zsh : command not found : express

Це було після мене

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

Але потім я побачив журнал консолі npm install commnand

/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

що дало підказку, що виконуваний експрес знаходиться у папці bin.

Отже, рішення таке: відкрити ~ / .zshrc або ~ / .bashrc та експортувати шлях таким чином:

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

Це працює і зараз.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.