2011-12-24 4 views
21
C:\Users\Nick\Desktop\turntablefm\Bots\Super Bot>node bot.js 

node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: Cannot find module 'mongoose' 
    at Function._resolveFilename (module.js:334:11) 
    at Function._load (module.js:279:25) 
    at Module.require (module.js:357:17) 
    at require (module.js:368:17) 
    at Object.<anonymous> (C:\Users\Nick\Desktop\turntablefm\Bots\Super Bot\db.j 
s:1:78) 
    at Module._compile (module.js:432:26) 
    at Object..js (module.js:450:10) 
    at Module.load (module.js:351:31) 
    at Function._load (module.js:310:12) 
    at Module.require (module.js:357:17) 

Я уже установил его, используя установку npm, и попытался переустановить, но это не сработало никаких идей?Ошибка Node.js: Не удается найти модуль 'mongoose'

+0

не стесняйтесь отмечать ответ, если он вам помог. Cheers –

+0

Я использовал pip для установки мангуста. Но у меня такая же проблема. Может кто-нибудь указать мне в правильном направлении? – aman

ответ

0

в каталоге bot.js, есть ли папка node_modules, в которой есть папка mongoose? Работает ли ваш сервер mongodb?

Вы можете протестировать его, находясь в корневом каталоге проекта, вызывающем узле (без аргументов, чтобы открыть REPL), и попробуйте там mongoose.

+0

нет там нет, но есть папка node_modules с мангустом, в ней она находится в неправильном месте? на моем другом компьютере у меня в квартире была работоспособная работа, и все равно на этом компьютере он запускал эту ошибку. –

+0

Если вы уверены, что это точно то же самое, убедитесь, что mongodb установлен правильно и запущен на машине, у которой есть проблема. – Paul

33

пытается устанавливать с помощью этой команды:

npm install mongoose 

не используйте -g переключатель.

ОТВЕТ: Я выполнил командную строку в режиме администратора.

http://prazjain.wordpress.com/2012/04/24/node-js-error-error-cannot-find-module-xyz/

+0

Зачем -g это не работает? – rafaelcosman

+2

Из [doc] (http: //blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation /): В общем, эмпирическое правило: Если вы устанавливаете что-то, что хотите использовать в своей программе, используя require ('whatever'), а затем установите его локально, в корне вашего проекта. Если вы устанавливаете что-то, что хотите использовать в своей оболочке, в командной строке или что-то еще, установите его глобально, чтобы его двоичные файлы оказались в переменной среды PATH. –

2

У меня такая же проблема в моем Mac и сделал поиск в центре внимания и обнаружили, что мангуст установлен в/USR/местные/node_modules (когда я побежал «НПМ установки мангуста»). Перемещение папки mongoose в ~ (home) node_modules, где npm supposted для фактической установки исправленной моей проблемы.

+0

Yup - такой же здесь. Я npm установил его в «Пользователи/Имя» в моей Windows-коробке и получил эту ошибку. Когда я переместил node_modules в несколько каталогов, он работал отлично. – mattbryanswan

0

Вы используете операционную систему Windows, которая не поддерживает мангуст. Как видно из этого сообщения об ошибке:

C:\>npm install mongoose 
npm http GET https://registry.npmjs.org/mongoose/2.5.10 
npm http 304 https://registry.npmjs.org/mongoose/2.5.10 
npm http GET https://registry.npmjs.org/hooks/0.2.0 
npm http GET https://registry.npmjs.org/mongodb/0.9.9-4 
npm http 304 https://registry.npmjs.org/mongodb/0.9.9-4 
npm http 304 https://registry.npmjs.org/hooks/0.2.0 
npm WARN package.json [email protected] No README.md file found! 
npm ERR! notsup Unsupported 
npm ERR! notsup Not compatible with your operating system or architecture: mongo 
[email protected] 
npm ERR! notsup Valid OS: linux,darwin,freebsd 
npm ERR! notsup Valid Arch: any 
npm ERR! notsup Actual OS: win32 
npm ERR! notsup Actual Arch: x64 

npm ERR! System Windows_NT 6.1.7601 
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod 
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "mongoose" 
npm ERR! cwd C:\ 
npm ERR! node -v v0.8.18 
npm ERR! npm -v 1.2.2 
npm ERR! code EBADPLATFORM 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  C:\npm-debug.log 
npm ERR! not ok code 0 
0

на окнах, если вы делаете

npm install mongoose 

будет установить его по умолчанию на диске С: \ Drive

и если вы пытаетесь запустить некоторые * .js файл из D: \ диск

он даст вам такую ​​же ошибку.

поэтому я думаю, что каталог установки и файл * .js должны иметь один и тот же корень.

6

Вы должны вызвать в командной строке

npm install mongoose

забудьте вызвать эту команду из корневого пути вашего проекта

1

НОЙ установка создает «node_modules» в PWD (в настоящее время рабочий каталог)

Поскольку ваше приложение растет, количество необходимых модулей растет, и лучший подход заключается в том, чтобы поддерживать package.json (referenc e: https://stackoverflow.com/a/14226133/832147), а затем выпустить только «npm install» вместо установки каждого.

В качестве расширения при развертывании приложения на таких платформах, как Heroku, вы можете игнорировать (git игнорировать) свой огромный каталог node_modules вашего проекта. Heroku устанавливает ваши зависимые модули, читая ваш пакет.JSON

этот подход позволяет нам создавать одни и те же необходимые модули узла для каждого из наших узлов на основе проектов, но это нормально, как нам нужно выдать «NPM установить» команду только один раз в проект

0

Из doc/blog

In general, the rule of thumb is:

If you’re installing something that you want to use in your program, using require('whatever'), then install it locally, at the root of your project.

If you’re installing something that you want to use in your shell, on the command line or something, install it globally, so that its binaries end up in your PATH environment variable.

6

Установка с опцией --save:

npm install mongoose --save 

Это добавляет мангуст его package.json, который использует Heroku для создания вашего приложения.

3
npm install mongoose 

он будет работать, и если все в порядке, то вы получите следующее в терминале

[email protected] node_modules/mongoose 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] 
├── [email protected] ([email protected], [email protected], [email protected]) 
└── [email protected] ([email protected], [email protected], [email protected]) 
1

Если вы уже установили мангуста глобально (НПМ установки -g мангуста), а затем сделать

% npm link mongoose 

в каталоге проекта. Это сработало для меня.

6

Вы можете сделать одно из двух вещей, чтобы сделать его запустить: -

1) Установите мангуста глобально с ниже шаги: -

а) npm install mongoose -g

б) Перейдите в приложение каталог, где находится bot.js, а затем запустить

npm link mongoose

Пояснение: - Когда вы устанавливаете пакет по всему миру через npm, он загружается в глобальную папку node_module. Для меня (пользователь Mac) он находится под /usr/local/lib/node_modules/mongoose. Мы связываем это с тем каталогом, из которого вы пытаетесь запустить module.js.

2) Другой подход заключается в установке мангуста локально, а не глобально через

npm install mongoose

После выполнения любой из них, вы будете видеть node_modules -> папка мангуст под «bot.js ', что означает, что мангуста была успешно установлена.

Теперь запустите узел bot.js, он будет работать.

+0

Ясное объяснение имхо, это помогло мне понять. +1! – pr0gma