Экспресс-модуль не найден при установке с помощью NPM
Когда я пытаюсь запустить файл app.js, созданный выражением, я получаю следующую ошибку:
$ node app.js
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'express'
at Function._resolveFilename (module.js:320:11)
Когда я печатаю выражение 'express -version', я получаю оператор возврата 2.3.3. Я использовал npm для установки express. Мне пришлось вручную сделать npm, используя следующие инструкции:
git clone http://github.com/isaacs/npm.git
cd npm
sudo make install
Ошибка Error: Cannot find module 'express'
.
Нужно ли мне что-то делать после установки npm и выражения для того, чтобы явным образом видеть модули, созданные npm?
My node - версия: 0.4.6
Мой экспресс - это версия: 2.3.3
Моя версия npm - версия: 1.0.6
Экспресс установлен глобально. Я использовал флаг -g для его установки.
Изменить: Когда я пытаюсь выполнить node -e require.paths, я получаю:
['/home/user/.node_modules', '/home/user/.node_libraries', '/usr/local/lib/ node']
Итак, node не обнаруживает установку npm. Как мне получить node для обнаружения установки npm?
Ответы
Ответ 1
У меня была та же проблема. Это работало для меня, хотя:
Кажется, что npm (теперь?) устанавливает node модули на /usr/local/lib/node_modules/
, а не /usr/local/lib/node/
То, что я сделал, это просто скопировать все из node_modules в node: sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/
, и теперь это работает для меня.
Надеюсь, это поможет вам: -)
Ответ 2
Ответ 3
Используйте локальные установки для require() и глобальной установки для приложений с командной строкой.
Если вам нужны оба варианта, используйте команду npm link
.
Ответ 4
В Ubuntu 12.04 вам нужно добавить export NODE_PATH=/usr/local/lib/node_modules
к вашему /.bashrc, чтобы использовать глобально установленные модули.
Ответ 5
Похоже, что в то время как npm был обновлен для установки глобальных модулей в /usr/local/lib/ node_modules, Node собственный require.paths еще не отражает это изменение.
Существует два разумных решения:
1.
Добавьте следующий код в начало приложения:
require.paths.push('/usr/local/lib/node_modules');
Pro: неинвазивный, легко добавить
Con: требуется дисциплина, будущие версии Node ограничивают доступ к require.paths
2.
Как root, выполните:
ln -s /usr/local/lib/node_modules /usr/local/lib/node
Pro: разумно неинвазивный
Con: требуется root, модифицирует linux fs, возможно, не сохранится обновление системы
Ответ 6
Как насчет NODE_PATH=/usr/local/lib/node_modules
в .bashrc или .bash_profile? Я думаю, что это правильный правильный путь.
Ответ 7
Может случиться, что если вы используете окна, переменная среды NODE_PATH не установлена, и, таким образом, при выполнении node fileName.js библиотеки не будут найдены.
Проверьте переменную на консоли, а если нет, создайте ее. Дайте ему значение NODE_HOME\ node_modules, где NODE_HOME - это ваш node установочный каталог. Этот путь - это где npm install размещает каждый модуль при загрузке.
Ответ 8
Установите NODE_PATH=NODE_HOME\node_modules
.
Я использую Windows 7, и он отлично работает.
Ответ 9
require.paths удаляется, вместо этого используйте переменную среды NODE_PATH.
Ответ 10
Похоже, что самый простой способ сделать это - запустить npm install
из папки вашего приложения. Это говорит, что npm подключает все.
Это последняя инструкция после express <appname>
:
...
dont forget to install dependencies:
$ cd <appname> && npm install
Ответ 11
для всех проблем с выражением с компьютером mac:
Решение:
1.- скажите своему пользователю папку .npm:
sudo chown -R Webmaste/Users/webmaste/.npm/
- В тестовой папке или в папке:
sudo npm install -g [email protected]
- Вызвать экспресс из вашего фактического местоположения:
/USR/локальные/доли/НМП/бен/выразить
4: sudo cd. && npm install
5: наконец:
node приложение
окончательное сообщение в консоли должно выглядеть следующим образом:
Экспресс-сервер, прослушивающий порт 3000 в режиме разработки
Ответ 12
для пользователей Mac
cd /usr/local/lib/node
sudo ln -s ../node_modules/* ./$1
Ответ 13
Я установил gulp
, и когда я запустил эту команду gulp
в командной строке, я получил ошибку gulp: command not found
. Оказалось, что он установил gulp
в мою локальную папку /home/YOURUSERNAME/.node/lib/node_modules
, а не в глобальную папку npm
.
Вы можете проверить корневую папку npm
, выполнив эту команду: npm root -g
, которая возвращала мой личный каталог /home/YOURUSERNAME/.node/lib/node_modules
, а не ожидаемый /usr/local/lib/node_modules
.
Вы можете исправить это, выполнив команду npm config set prefix /usr/local
.
Ответ 14
Наконец, с Linux хорошим способом является использование команды: sudo apt-get install node-express
Но с выражением 4 мы должны использовать экспресс-генератор для создания скелета приложения, установить его с помощью "npm install express-generator -g", а затем запустить команду "express myapp".
см. также установить экспресс