node.js, ошибка: не удается найти модуль express


126

Я новичок в Node.js, постараюсь научиться использовать экспресс для создания своего первого веб-приложения. Я застрял на своем самом первом примере кода, и мне нужна помощь, чтобы запустить его. Прежде чем опубликовать этот вопрос, я провел поиск по переполнению стека, нашел несколько похожих вопросов, но все еще не смог это исправить.

Ошибка: не удается найти модуль экспресс

Я использую 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$ 

Обновите, чтобы ответить на вопрос Чови:

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

32
Ты напечаталnpm install
chovy

1
Вы уверены, что экспресс-библиотека находится в вашей папке "node_modules"? Вы также можете попробовать переместить файл index.js на один каталог вверх в «/ Users / feelexit / WebstormProjects / Learnnode /» и оставить папку node_modules в покое.
По умолчанию

1
Пожалуйста, опубликуйте свой package.jsonфайл. Это поможет в устранении проблемы.
Ахил Райна

@chovy, я использую npm install express для установки express. что делает только "npm install"?
qinking126

Ответы:


158

Это говорит

 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" - лучший вариант.
Гаурав Гупта

символическая ссылка Ошибки часто возникают, если вы установили что-то глобально и, да, символическая ссылка сломалась. Попробуйте npm linkвоссоздать соответствующую связь ...
Фрэнк Нок

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

Не упускайте из виду «И снова запустите свою программу». В моем случае мне пришлось перезапустить процесс в моем process manager. Сам по себе он не перезапустился.
Тадей

42

После того, как вы выразите в своем терминале, выполните

 npm install

Чтобы установить все зависимости.

Затем вы можете создать приложение узла для запуска сервера.


7
Вы должны указать, что для этого требуется файл со списком пакетов, например .json .. И это не всегда так.
Погриндис

@VjyV в том же каталоге, что и ваш файл узла .js. Но в каталоге должен быть файл package.json, чтобы можно было установить необходимые зависимости.
Саураб Рана

34

Проверьте, установлен ли у вас expressмодуль. Если нет, используйте эту команду:

npm install express

и если ваш node_modulesкаталог находится в другом месте, установите NODE_PATHпеременную envirnment:

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.
Alex

29

 npm install --save express   
Это сработало для меня, просто запустите установку express.js снова


11

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


5

Копаем здесь старую ветку, НО у меня была такая же ошибка, и я решил, перейдя в каталог, в котором находится мой NodeApp, и запустил npm install -d


Не уверен, почему и как это имеет значение, но это устанавливает его в ваших devdependencies: docs.npmjs.com/cli/install
Guy Lowe

1
@GuyLowe -d- это отладка для npm, -Dэто зависимости разработчика.
Джон Павек

5

Если вы не установите Node_PATH , единственный другой вариант - установить Express в каталог приложения, например npm install express --save. Возможно, Express уже установлен, но nodeпо какой-то причине не может его найти


1
Это сработало для меня, лучше выполнить команду установки в том же каталоге, что и ваши файлы .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 всегда ищет модули ./node_modules(и его внутреннюю папку), когда путь не начинается с ./или /( подробнее здесь )

Я думаю, вы пропустили размещение своего основного файла в папке модуля


2

для этого сценария запустите команду npm install express, используя командную строку для соответствующей папки, в которой вы хотите запустить программу. Пример Я хочу запустить программу экспресс-модуля 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.

-gflag установит этот модуль (экспресс) в глобальном контексте узла - это означает, что узел будет / должен распознавать expressмодуль из любого файла js без необходимости указывать полный путь к используемому модулю.

Надеюсь это поможет!!


0

У меня такая же проблема. Моя проблема заключалась в том, что я должен перейти в каталог проекта Node.js в командной строке перед установкой Express.

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

0

Я предполагаю, что это курсовая работа из курса веб-разработки Кольта Стила ... Я искал тот же ответ, почему я тоже получил эту ошибку ... Кольт этого не говорит, но вы берете папку 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.