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 / request -> / Users / soulsonic / dev / sandbox / node_test / request

я перезапускав термінал після кожної команди, але продовжую отримувати помилку модуля неможливо знайти.

оновлення

у моєму початковому каталозі мав бути якийсь конфлікт, тому що "запит на встановлення npm" не додавав "запит" під 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 всередині каталогу проекту

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папки самостійно.
Слакс

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

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

@Drumnbass: Ні. Теж npm installвстановлює всі залежності.
Слакс

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.

тепер не використовуйте

вузол app.jsабо вузол test.js, ви зіткнетеся з цією проблемою, роблячи це. Ви також можете надрукувати проблему, яка є причиною, використовуючи цю команду .."node -p app.js"

Вищевказана команда для запуску nodeJs застаріла. Натомість використовуйте

npm start

Ви повинні це побачити ..

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

Відкрийте веб-браузер і перевірте наявність localhost: 3000

Ви повинні побачити Express install (Ласкаво просимо до Express)


1

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


1

якщо якийсь модуль вам не вдається знайти, спробуйте використати статичний URI, наприклад:

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

Цей приклад, запущений на Ubuntu Gnome 16.04 із 64 біт, вузол -v: v4.2.6, npm: 3.5.2 Див. Блог Бена Наделя


0

ReferenceError: Не вдається знайти змінну: require.

Ви встановили "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.