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


92

Я установил модуль запроса и получил сообщение об ошибке:

module.js:340
    throw err;
          ^
Error: Cannot find module 'request'

Я прочитал все сообщения об этой ошибке и понимаю, что это связано с тем, что запросы модуля не найдены глобально, но я уже пробовал 2 предложения

npm запрос на установку -g

следует ли установить его в / usr / loca / bin? потому что я его там не вижу.

а также

sudo npm ссылка

/ usr / local / lib / node_modules / запрос -> / Users / soulsonic / dev / sandbox / node_test / request

Я перезапускал терминал после каждой команды, но продолжал получать ошибку «Не могу найти модуль».

Обновить

в моем начальном каталоге должен быть какой-то конфликт, потому что "npm install request" не добавлял "request" в node_modules (там еще 10 других) .. после переключения в новый каталог он просто работал.

если я запускаю его с ключом -g, я вижу, что он установлен в / usr / local / lib / node_modules / request.

Кажется, мне просто нужно обновить свой профиль, чтобы указанный выше путь добавлялся автоматически.

Ответы:


171

Перейти в каталог вашего проекта

mkdir TestProject
cd TestProject

Сделайте этот каталог корнем вашего проекта (это создаст package.jsonфайл по умолчанию )

npm init --yes

Установите необходимый модуль npm и сохраните его как зависимость проекта (он появится в package.json)

npm install request --save

Создайте test.jsфайл в каталоге проекта с кодом из примера пакета

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body); // Print the google web page.
  }
});

Каталог вашего проекта должен выглядеть так

TestProject/
- node_modules/
- package.json
- test.js

Теперь просто запустите узел в каталоге вашего проекта

node test.js

1
да, это именно тот пример, которому я следовал. и я запускаю установщик npm 10 раз ... в моем тестовом проекте и использую флаг -g. я вижу node_modules в моем тестовом каталоге, но запроса там нет .. он продолжает выдавать мне эту ошибку ..
Sonic Soul

потому что, несмотря на то, что у меня был какой-то странный конфликт, это правильные шаги, которым нужно следовать. это сработало, как только я сделал это снова в новом каталоге. Я добавил обновленную информацию о том, что случилось со мной, что, вероятно, будет редкостью для других
Sonic Soul

32

Вам нужно просто установить request локально в своем проекте.

Просто cdв папку, содержащую ваш файл js, и запустите

npm install request

после "запроса на установку npm" я скопировал свой app.js в папку запроса и попытался запустить оттуда с тем же результатом. и мне нужно будет использовать его более чем в одном проекте.
Sonic Soul

@SonicSoul: Вы неправильно понимаете, как работают пакеты узлов. require('request')заглядывает ./node_modules/request, и вот куда npm installкладет. Вам следует запускать npm installиз корневого каталога каждого приложения и никогда не трогать node_modulesпапку самостоятельно.
SLaks

перед бегом npm install requestследует бежать npm init. Следуйте инструкциям, которые создадут package.jsonв папке вашего проекта. Затем запустите, npm install -S requestкоторый установит модуль запроса в папку node_modules, а также добавит запрос в ваш файл package.json
Ной

@SLaks означает ли это, что каждый раз, когда я устанавливаю какой-либо пакет, мне нужно войти в его корневую папку и выполнить npm install? для всех?
Drumnbass

@Drumnbass: Нет, npm installтоже устанавливает все зависимости.
SLaks 08

16

У меня была npm install request --save такая же проблема, я решил проблему. Надеюсь, это поможет.


1

Я столкнулся с той же проблемой, вот как я заработал ..

открытый терминал:

mkdir testExpress
cd testExpress
npm install request

или

sudo npm install -g request // If you would like to globally install.

теперь не используйте

node app.jsили node test.js, при этом вы столкнетесь с этой проблемой. Вы также можете распечатать возникшую проблему, используя эту команду."node -p app.js"

Приведенная выше команда для запуска nodeJs устарела. Вместо этого используйте

npm start

Вы должны это увидеть ..

testExpress@0.0.0 start /Users/{username}/testExpress
node ./bin/www

Откройте свой веб-браузер и проверьте localhost: 3000.

Вы должны увидеть Экспресс-установку (Добро пожаловать в Экспресс)


1

Я столкнулся с той же проблемой, когда устанавливаю его глобально, затем я пытаюсь установить его локально, и он работает.


1

если какой-то модуль вы не можете найти, попробуйте использовать статический URI, например:

var Mustache = require("/media/fabio/Datos/Express/2_required_a_module/node_modules/mustache/mustache.js");

Этот пример запускается в Ubuntu Gnome 16.04 из 64 бит, node -v: v4.2.6, npm: 3.5.2. См.: Блог Бена Наделя.


0

ReferenceError: не удается найти переменную: требуется.

Вы установили «npm», вы можете запустить сценарий в обычном режиме на «localhost» «127.0.0.1».

Когда вы используете http.clientRequest () с «опциями» в «npm», вам необходимо установить «RequireJS» внутри модуля.

Модуль - это любой файл или каталог в каталоге node_modules, который может быть загружен с помощью Node. Установите "RequiereJS", чтобы http.clientRequest (опции) работал.


0

Я попытался установить модуль локально с версией, и это сработало !!

npm install request@^2.*

Спасибо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.