Экспресс-модуль не найден при установке с NPM - PullRequest
47 голосов
/ 07 мая 2011

Когда я пытаюсь запустить файл app.js, созданный Express, я получаю следующую ошибку:

$ 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 для установки экспресс. Мне пришлось вручную сделать npm, используя следующие инструкции:

git clone http://github.com/isaacs/npm.git
cd npm
sudo make install

Ошибка Error: Cannot find module 'express'.

Нужно ли что-то делать после установки npm и express, чтобы express мог видеть модули, созданные npm?

  • Мой узел - версия: 0.4.6
  • Мой экспресс - версия: 2.3.3
  • Мой номер версии: 1.0.6

Экспресс установлен по всему миру. Я использовал флаг -g, чтобы установить его.


Редактировать: Когда я пытаюсь "node -e require.paths" Я получаю:

[ '/home/user/.node_modules',
  '/home/user/.node_libraries',
  '/usr/local/lib/node' ]

Итак, узел не обнаруживает установку npm. Как получить узел для обнаружения установки npm?

Ответы [ 14 ]

68 голосов
/ 29 августа 2011
  • Установить экспресс

    npm install -g express

  • Создать новое приложение

    express your_app

  • перейдите в каталог приложения

    cd your_app

  • используйте ссылку npm для разрешения модулей

    npm link express

27 голосов
/ 04 августа 2011

Использовать локальные установки для require () и глобальные установки для приложений командной строки.

Если вам нужно и то, и другое, используйте команду npm link.

20 голосов
/ 09 августа 2012

В Ubuntu 12.04 вы должны добавить export NODE_PATH=/usr/local/lib/node_modules в ваш /.bashrc, чтобы использовать глобально установленные модули.

15 голосов
/ 14 мая 2011

Похоже, что хотя npm был обновлен для установки глобальных модулей в /usr/local/lib/node_modules, собственный узел require.paths пока не отражает это изменение.

Существует два разумных решения:

  1. Добавьте следующий код в начало вашей заявки:

    require.paths.push('/usr/local/lib/node_modules');
    
    • Pro: неинвазивный, легко добавляемый

    • Con: требует дисциплины, будущие версии узла будут ограничивать доступ к require.paths

  2. В качестве пользователя root выполните:

    ln -s /usr/local/lib/node_modules /usr/local/lib/node
    
    • Pro: достаточно неинвазивный

    • Con: требует root, изменяет linux fs, может не выдержать обновления системы

8 голосов
/ 09 мая 2011

У меня была такая же проблема.Это сработало для меня:

Похоже, npm (сейчас?) Устанавливает модули узлов в /usr/local/lib/node_modules/, а не /usr/local/lib/node/

Я просто скопировал все из node_modules в узел:sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/ и теперь мне кажется, что это работает.

Надеюсь, это поможет вам: -)

6 голосов
/ 23 октября 2011

А как насчет NODE_PATH=/usr/local/lib/node_modules в .bashrc или .bash_profile ? Я думаю, что это действительно правильный путь.

2 голосов
/ 30 октября 2012

require.paths удалено, вместо этого используйте переменную окружения NODE_PATH.

2 голосов
/ 18 июня 2012

Set NODE_PATH=NODE_HOME\node_modules.

Я использую Windows 7, и она отлично работает.

2 голосов
/ 08 марта 2012

Может случиться, что если вы используете windows, переменная окружения NODE_PATH не установлена, и поэтому при выполнении node fileName.js она не найдет библиотеки.

Проверьте переменную на консоли и, если ее нет, создайте ее.Задайте ему значение NODE_HOME\node_modules, где NODE_HOME - каталог установки вашего узла.По этому пути npm install помещает каждый модуль после загрузки.

1 голос
/ 11 ноября 2011

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

Это последняя инструкция после express <appname>:

...
dont forget to install dependencies:
$ cd <appname> && npm install
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...