node.js, помилка: не вдалося знайти модуль 'express'


125

Я новачок у Node.js, спробуйте навчитися експрес, щоб створити свій перший веб-додаток. Я застряг у своєму першому зразковому коді і мені потрібна допомога, щоб запустити його. Перед тим, як опублікувати це запитання, я здійснив пошук по переповненню стека, знайшов подібні запитання, але все ще не зміг його виправити.

Помилка: неможливо знайти модуль 'express'

Я використовую mac os 10.8.2 . У мене встановлено Node.js за допомогою nvm.

node.js: 0.8.20 шлях до вузла: /Users/feelexit/nvm/v0.8.20/bin/node шлях для вираження: / Users / feelexit / nvm / node_modules / express

ось мій зразок коду: цей файл знаходиться за адресою:

/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js

var express = require('express');

var app = express();

app.get('/', function(req, res){

    res.send('welcome to express');
});

app.listen(3000);

коли я намагаюся запустити цю команду node index.js

Я отримую таке повідомлення про помилку, будь ласка, допоможіть мені виправити це.

Дякую.

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js:1:81)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
feelexits-Mac:node_modules feelexit$ 

Оновлення, щоб відповісти на запитання chovy:

feelexits-Mac:~ feelexit$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.2.0
npm ERR! command "/Users/feelexit/nvm/v0.8.20/bin/node" "/Users/feelexit/nvm/v0.8.20/bin/npm" "install"
npm ERR! cwd /Users/feelexit
npm ERR! node -v v0.8.20
npm ERR! npm -v 1.2.11
npm ERR! path /Users/feelexit/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/feelexit/npm-debug.log
npm ERR! not ok code 0

Може бути , це допоможе stackoverflow.com/questions/9133784 / ...
user568109

30
Ви npm install
набрали

1
Ви впевнені, що бібліотека експресів знаходиться у папці "node_modules"? Ви також можете спробувати перемістити файл index.js в один каталог до "/ Users / feelexit / WebstormProjects / learnnode /" і залишити папку node_modules у спокої.
за замовчуванням

1
Будь ласка, опублікуйте свій package.jsonфайл. Це допоможе у налагодженні проблеми.
Ахіл Райна

@chovy, я використовую npm install express для установки express. що робить тільки "npm install"?
qinking126

Відповіді:


157

Він говорить

 Cannot find module 'express'

Якщо у вас встановлений експрес? Якщо ні, то запустіть це.

 npm install express

І запустіть програму ще раз.


1
Це не виправляє проблему в моєму випадку. npm install expressпоказує цю помилку npm ERR! Error: UNKNOWN, symlink '../express/bin/express'. Це здається глибшим питанням.
Sliq

Використовуйте sudo, якщо ви не виправили дозволи для каталогу для npm. У будь-якому випадку, "sudo npm install" - кращий варіант.
Гаурав Гупта

symlink Помилки часто трапляються, якщо ви встановили речі в усьому світі, і так, символьна посилання зламалася. Спробуйте npm linkзаново створити відповідне посилання ...
Френк Нокк

@Sliq Я намагався з вашим рішенням, але я не можу вирішити свою проблему, чи можете ви мені допомогти?
VjyV

Не забувайте "І знову запустіть програму". У моєму випадку мені довелося перезапустити процес в моєму process manager. Він не перезапустився сам по собі.
Тадей

42

Після того, як ви зробите експрес у своєму терміналі, тоді зробіть

 npm install

Щоб встановити всі залежності.

Тоді ви можете зробити додаток для вузла для запуску сервера.


7
Ви повинні зазначити, що для цього потрібен файл списку пакунків, тобто .json .. І це не завжди так.
Pogrindis

@VjyV в тому самому каталозі у вас є файл вузла .js. Але він повинен мати файл package.json в каталозі, щоб він міг встановити необхідні залежності.
Саурабх Рана

34

Перевірте, чи встановлений expressмодуль. Якщо ні, використовуйте цю команду:

npm install express

і якщо ваш node_modulesкаталог знаходиться в іншому місці, встановіть NODE_PATHзмінну навколишнього середовища:

set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

12
Це правильна відповідь для всіх, хто публікує ці CTRL+C / CTRL+V npm installвідповіді: чи дійсно ви думаєте, що хтось спробував би щось запустити, не перевіряючи, чи встановлено його спочатку? Серйозно ...
Клаудіо Голландія

3
Просто додавання незначної деталі: Вам потрібно запустити команду install express у каталозі вашої програми, а не в папці установки Node.js або в папці npm в AppData. Тому що це помилка, яку я зробив, бо думав, що це якась добавка SDK.
Олексій

29

 npm install - зберегти експрес   
Це працювало для мене, просто запустіть програму express.js знову


11

npm install з вашого каталогу додатків вирішить проблему, оскільки вона встановить усе необхідне


5

Перекопання тут старої нитки, АЛЕ у мене була така сама помилка, і я вирішив, перейшовши до каталогу, у якому знаходиться і працює запуск NodeApp. npm install -d


Не впевнений, чому або як це має значення, але це встановлює це у вашій розвиненості: docs.npmjs.com/cli/install
Гай Лоу

1
@GuyLowe -d- це налагодження npm, -Dце dev залежності.
Джон

4

Якщо ви не встановите Node_PATH , єдиний інший варіант - встановити експрес у каталозі додатків, наприклад npm install express --save. Експрес може бути вже встановлений, але nodeне може знайти його чомусь


Цей для мене працював, краще виконайте команду install у тому самому каталозі, що і ваші .js файли. Також ви можете запустити команду "npm init", щоб створити файл package.json, щоб уникнути подальших проблем.
emarshah

3

У вас експрес-модуль розташований в іншому каталозі, ніж ваш проект. Це, мабуть, проблема, оскільки ви намагаєтеся вирішити require()її локально. Спробуйте перенести свій експрес-модуль з / Users / feelexit / nvm / node_modules / express в / Users / feelexit / WebstormProjects / learnnode / node_modules / express . Ця інформація може дати вам більш детальну інформацію про структуру файлів node_module.


2

якщо ваш головний файл розташований в /Users/feelexit/WebstormProjects/learnnode/node_modules/index.jsто час, вираз повинен бути розміщений у, /Users/feelexit/WebstormProjects/learnnode/node_modules/node_modulesоскільки вузол завжди шукає модулі в ./node_modules(та його внутрішній папці), коли шлях не починається з ./або /( більше інформації тут )

я думаю, ви пропустили розміщений ваш головний файл у папці модуля


2

для цього сценарію запустіть команду npm install express, використовуючи підказку cmd для відповідної папки, в якій потрібно запустити програму. Приклад Я хочу запустити програму експрес-модуля server.js у F: \ nodeSample. Тому запустіть "npm install express" у цій конкретній папці, а потім запустіть server.js


1

Запустіть npm install express body-parser cookie-parser multer --saveкоманду в одному каталозі з файлом nodejs з вихідним кодом, щоб вирішити цю проблему. P / s: перевірити каталог після запуску команди, щоб зрозуміти більше!


1

У рідкісних випадках кеш-пам'ять npm може пошкодитися. Для мене те, що працювало:

npm cache clean --force

Як правило, менеджер пакунків виявить корупцію та переробляє самостійно, тому зазвичай це не потрібно. Однак у моєму випадку Windows 10 декілька разів вийшов з ладу, і я підозрюю, що це могло бути під час операції з вилученням. Сподіваюся, це комусь допоможе!

Більше інформації: https://docs.npmjs.com/cli/cache


1

Я зіткнувся з подібною проблемою, і врешті-решт це було справою деяких старих залежностей, які зіпсували мій сервер Heroku.

Перебуваючи в папці мого проекту, я працював:

npm uninstall
npm install

Я сподіваюся, що це допомагає


0

npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'

Це трапляється через відсутні права доступу або від’єднані файли, коли npm працював.

Це означає, що виконавець npmяк цей користувач не має достатньо прав для читання / запису з файлу, в цьому випадку package.json.

спробуйте додати sudoще до всієї команди - вона повинна вирішити.

$ sudo npm install -g express
$ Password:*******

Пароль буде вашим адміністраторським паролем вашого mac.

-gпрапор встановить цей модуль (вираз) у глобальному контексті вузла - значить, вузол / повинен розпізнавати expressмодуль з будь-якого файлу js, не надаючи повний шлях до використовуваного модуля.

Сподіваюся, це допомагає !!


0

У мене була така ж проблема. Моя проблема полягала в тому, що я маю перейти до каталогу проектів Node.js у командному рядку перед установкою express.

cd /Users/feelexit/WebstormProjects/learnnode/node_modules/

0

Я здогадуюсь, що це курсова робота з курсу веб-розробки Colt Steele ... Я шукав таку ж відповідь, чому я теж опинився з цією помилкою. Colt так не каже, але ви берете папку node_module і рухаєтесь в нову папку, в якій ви працюєте ... це те, що працювало для мене.


0
D:\learn\Node.js\node app.js
module.js:549
    throw err;
    ^

Error: Cannot find module 'body-parser'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

Іноді версія не збігається з package.json Виправлена ​​проблема, перевіривши package.json, тоді використовуйте наступні команди: npm install body-parser@1.13.2 для мене це вирішено.


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