node.js: 'istek' modülü bulunamıyor


92

İstek modülünü kurdum ve şu hatayı alıyorum:

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

Bu hatayla ilgili tüm gönderileri okudum ve bunun, modül isteklerinin genel olarak bulunmadığından kaynaklandığını anladım, ancak 2 öneriyi zaten denedim

npm yükleme isteği -g

bu onu / usr / loca / bin içine kurmalı mı? çünkü orada görmüyorum.

ve

sudo npm bağlantısı

/ usr / local / lib / node_modules / request -> / Users / soulsonic / dev / sandbox / node_test / request

Her komuttan sonra terminali yeniden başlattım, ancak modül bulunamadı hatası almaya devam ettim.

Güncelleme

İlk dizinimde bir çeşit çakışma olmalı, çünkü "npm yükleme isteği" node_modules altına "istek" eklemiyordu (orada 10 tane daha var) .. yeni bir dizine geçtikten sonra çalıştı.

-g anahtarıyla çalıştırırsam, / usr / local / lib / node_modules / request konumuna yüklendiğini görüyorum.

Görünüşe göre yukarıdaki yolun otomatik olarak eklenmesi için profilimi güncellemem gerekiyor.

Yanıtlar:


171

Projenizin dizinine gidin

mkdir TestProject
cd TestProject

Bu dizini projenizin kökü yapın (bu varsayılan bir package.jsondosya oluşturacaktır )

npm init --yes

Gerekli npm modülünü kurun ve bir proje bağımlılığı olarak kaydedin (içinde görünecektir package.json)

npm install request --save

test.jsPaket örneğindeki kodla proje dizininde bir dosya oluşturun

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.
  }
});

Proje dizininiz şöyle görünmeli

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

Şimdi sadece proje dizininizdeki düğümü çalıştırın

node test.js

1
evet bu tam olarak takip ettiğim örnek. ve şimdi npm yükleyicisini 10 kez çalıştırıyorum .. test projemde ve -g bayrağı kullanarak. test dizinimde node_modules görebiliyorum, ancak istek orada değil .. bana bu hatayı vermeye devam ediyor ..
Sonic Soul

çünkü garip bir anlaşmazlığım olsa da, izlenecek doğru adımlar bunlar. yeni bir dizinde tekrar yaptığımda işe yaradı. Başıma gelenlerle ilgili bir güncelleme ekledim ki bu muhtemelen başkaları için nadir olacaktır
Sonic Soul

32

Projenizin içinde request yerel olarak kurmanız yeterlidir .

Sadece cdjs dosyanızı içeren klasöre gidin ve çalıştırın

npm install request

"npm yükleme isteği" sonrasında app.js'mi istek klasörüne kopyaladım ve oradan aynı sonucu çalıştırmayı denedim. ve onu birden fazla projeden kullanmam gerekecek.
Sonic Soul

@SonicSoul: Düğüm paketlerinin nasıl çalıştığını yanlış anlıyorsunuz. require('request')bakar ./node_modules/requestve npm installonu nereye koyar. npm installHer uygulamanın kök dizininden çalıştırmalısınız ve node_modulesklasöre asla kendiniz dokunmamalısınız .
SLaks

çalıştırmadan önce npm install request, çalıştırmak gerekir npm init. package.jsonProje klasörünüzde bir oluşturacak istemleri takip edin . Ardından npm install -S request, istek modülünü hem node_modules klasörüne yükleyecek hem de package.json dosyanıza istek ekleyecek olan çalıştırın
Noah

@SLaks, herhangi bir paketi her kurduğumda kök klasörüne girmem ve çalıştırmam gerektiği anlamına npm installmı geliyor? hepsi için?
Drumnbass

@Drumnbass: Hayır, npm installtüm bağımlılıkları da yükler.
SLaks

16

Aynı sorunu yaşadım, benim npm install request --save için sorunu çözdüm. Umarım yardımcı olur.


1

Ben de aynı problemle karşılaşıyordum, işte nasıl çalıştırdım ..

açık terminal:

mkdir testExpress
cd testExpress
npm install request

veya

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

şimdi kullanma

düğüm app.jsveya düğüm test.js, bunu yaparken bu problemle karşılaşırsınız. Bu komutu kullanarak da neden olan sorunu yazdırabilirsiniz."node -p app.js"

NodeJ'leri başlatmak için yukarıdaki komut kullanımdan kaldırıldı. Bunun yerine kullanın

npm start

Bunu görmelisin ..

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

Web tarayıcınızı açın ve localhost'u kontrol edin: 3000

Hızlı yüklemeyi görmelisiniz (Express'e Hoş Geldiniz)


1

Global olarak kurarken aynı problemle karşılaştım, sonra yerel olarak kurmaya çalışıyorum ve işe yarıyor.


1

bulamadığınız bir modül varsa, Statik URI ile deneyin, örneğin:

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

Bu örnek, 64 bitlik Ubuntu Gnome 16.04'te çalıştırın, düğüm -v: v4.2.6, npm: 3.5.2 Bkz .: Blog of Ben Nadel


0

ReferenceError: Değişken bulunamıyor: gerekli.

"Npm" yüklediniz, betiği normal şekilde bir "localhost" "127.0.0.1" için çalıştırabilirsiniz.

Http.clientRequest () 'i bir "npm" içinde "seçenekler" ile birlikte kullandığınızda, modülün içine "RequireJS" kurmanız gerekir.

Bir modül, Düğüm tarafından yüklenebilen node_modules dizinindeki herhangi bir dosya veya dizindir. Http.clientRequest (seçenekler) 'i çalıştırmak için "RequiereJS" yi kurun.


0

Modülü yerel olarak sürümüyle yüklemeyi denedim ve işe yaradı !!

npm install request@^2.*

Teşekkürler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.