Node.js Hatası: module express bulunamadı


145

İlk node.js uygulamamı yazdım, ancak ekspres kitaplığı bulamıyorum:

C:\ChatServer\Server>node server.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

Ancak ekspres kurulur ( -ganahtarla):

C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)

Biraz bilgi:

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>node --version
v0.10.9

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6


C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)

Bu sorunu nasıl çözebilirim? ( MUTLAKA ben olmadan yüklemek -g?)




Yanıtlar:


275

Express'i yerel olarak uygulamanızın bağlamına ( node_modulesklasör) yüklemeniz gerekir :

$ npm install express

Bunun nedeni, uygulamaların her zaman bağımlılık için kendi yerel bağlamlarına bakmalarıdır. Global kurulum yalnızca birim test çalıştırıcıları veya önyükleyiciler gibi sistem genelinde kullanılabilir ikili dosyaları ayarlamak içindir.

Express ile, global olarak yüklediğinizde, expressbir uygulamayı sizin için önyükleyebilen bir ikili dosya alırsınız. Daha fazla bilgi için şunu yazın

$ express --help

Yani, son sorunuza cevap vermek için: EVET , onsuz yüklemeniz gerekir -g.


1
Bu da bana yardımcı oldu. Ben vardı winstono iş olmaz komut init Uygulamamı ve bir sisteme başlatırken normal bir kullanıcı olarak Uygulamamı başlayan, ama ne zaman nedense çalıştığı, global olarak yüklenmiş. Winston'u yerel olarak uygulama dizinine yükleyerek (ve package.json'a ekleyerek) düzelttim.
trusktr

3
yüklenen genel bağımlılığı proje kök dizininize cd ile bağlayabilir ve sonra "npm bağlantısı <bazı bağımlılık adı>" kullanabilirsiniz
khoi nguyen

11
uygulamanızı oluşturduktan sonra npm yükleyin . Tüm bağımlılıkları kuracaktır.

Teşekkürler bu gerçekten yardımcı oldu. Node_modules klasörüne gitmek ve ekspres kurmaktan sonra sorunumu çözdüm
Megha

@Golo Roden Cevabınızı cevaplayarak çözümünüzü denedim ama hata veriyor: 'npm ERR! tar.unpack untar hatası C: \ Kullanıcılar \ VV \ AppData \ Roaming \ npm-cache \ express \ 4.14.0 \ package.tgz npm ERR! Windows_NT 6.3.9600 npm ERR! argv "C: \\ Program Dosyaları \\ nodejs \\\\ node.exe" "C: \\ Program Dosyaları \\ nodejs \\ node_modules \\ npm \\ bin \\ npm-cli.js" "install" " ekspres "
VjyV

20

Benim için aşağıdaki gibi --save seçeneği ile yerel olarak ifade kurulduğunda çalıştı:

$ npm install express --save

12

expressModülü takıp takmadığınızı kontrol edin , şu komutu kullanın:

 npm install express

ve node_modulesdizininiz başka bir yerde ise çevre NODE_PATHdeğişkenini ayarlayın :

 set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

Windows 10'da npm kurulum ekspresinden sonra, düğüm yoluna otomatik olarak eklenemez, düğüm modüllerini buna manuel olarak eklemeniz gerekir.
Jane

5

Golo çözümü iyi açıkladı, ancak bir açıklama ekleyebilirim:
bazen düğüm modülleri monte edilir

/usr/local/lib/node_modules

ve başlattığınızda düğüm blabla.js modülleri

/lib

Yani bir çözüm sembolik bir bağ oluşturmaktır:

sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules

1
daha kolay bir yol -> npm bağlantısı <modül>
Amit G

4

Sizin durumunuzda expressmodülünüz kurulu durumdadır C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express, ancak bu modülü proje dizininize almanız gerekir. Yani dosyayı kopyalamak gerekir expressdan modül klasörleri C:\Users\Dmitry\AppData\Roaming\npm\node_modules\olarak proje dizinine: C:\ChatServer\Server\node_modules. Proje klasörünüzde 'node_modules' adlı bir klasörünüz yoksa, önce klasörü oluşturun ve bu dosyaları bu klasöre yapıştırın. Bu yöntem benim windows pc benim için çalıştı. Düğüm sunucunuzu yeniden başlatın ve komut düğümünü bir kez daha çalıştırın C:\ChatServer\Server>node server.js. Şimdi çalışması gerekir !!!!


Windows 10 üzerinde de çalıştı!
Victor Michael Kosgei

3

Ubuntu tabanlı işletim sisteminde deneyebilirsiniz

sudo apt-get install node-express

benim için nane üzerinde çalışıyor


3

Yüklediğiniz Verilen düğüm sisteminizde Windows için aşağıdaki kullanarak projeniz için yerel Express yükleyin:

npm install express

veya

npm install express --save

Şunları kullanarak küresel erişim verebilirsiniz:

npm install -g express --save

2

Modülleri yüklü olmasına rağmen vscode bu hatayı aldım. Ben daktilo ve ekspres kullanıyorum. Gelen server.tsdosyalar tüm ithalat dolambaçlı alt çizgiler kırmızı yanıyordu. Hatalı bir dosyam olduğu ortaya çıktı tsconfig.json.

{
    "compileOnSave": false,
    "compilerOptions": {
        "module": "commonjs", // Previously this value was `es6`
        "target": "es6",
        "allowSyntheticDefaultImports": true,
        "baseUrl": "public",
        "sourceMap": true,
        "outDir": "dist",
        "jsx": "react",
        "strict": true,
        "preserveConstEnums": true,
        "removeComments": true,
        "noImplicitAny": true,
        "allowJs": true
    },
    "exclude": [
        "node_modules",
        "build"
    ]
}

1

harddisk'inizde bir klasör oluşturun örn. sample1 ve komut istemi türüne gidin: cd ve sample1 klasörünün yolunu verir ve sonra tüm modülleri yükleyin ...

npm yükleme ekspres

npm yüklemek yeşim

npm yükleme socket.io

ve sonra ne oluşturuyorsanız uygulama sample1 klasörüne kaydedin

dene...


1

Uygulama dizininize gidin ve aşağıdaki modülü kullanarak komut modülünü kurun npm install express --save tüm kurulum modülünü aşağıdaki komut npm ls komutunu kullanarak listeleyin ve tüm yerel kurulum modüllerini göreceksiniz.


1

global olarak express kurulumu yerel projenizde çalışmaz, bu nedenle kullanım için yerel olarak kurmanız gerekir.

npm install express

Umarım bu işe yarar

teşekkür ederim


0

Aynı sorunu vurdum. / Usr / local / bin / adresinde global olarak yüklü bir ekspresim vardı. 'Npm install' yaptığımda, yerel dizinin node_modules öğesinde express oluşturulmadı.

  1. $ HOME cihazınızda .npmrc dosya adınızın olup olmadığını kontrol edin
  2. 'Global = true' değerine sahipse, 'global = false' olarak değiştirin
  3. Şimdi uygulama dizininde 'npm install' yapın. Büyük olasılıkla, pakete bağımlı tüm modülleri uygulama dizini içindeki node_modules (local) içine kurmalısınız.

0
  • sudo brew kaldırma düğümü
  • demlemek güncelleme
  • demlemek yükseltme
  • demlemek temizleme
  • demlemek yükleme düğümü
  • sudo chown -R $ (whoami) / usr / yerel
  • demlemek bağlantı - overwrite düğümü
  • sudo demlemek postinstall düğümü

Bu benim için MacOS X Sierra'da çalıştı


0

Bunu paylaşmaktan gurur duymuyorum, ancak benim durumumda:

 require('express.handlebars')

 //and the correct form is:
 require('express-handlebars'); //Use dash instead.

0

Bu kitaptaki örneği izleyerek aynı hatayla karşılaştım: "Kubernetes Up & Running". Ekspres "elle"
yüklemeyi öneren birçok cevap görüyorum ama en iyi çözüm olduğuna ikna olmadım. Kullandığımız Çünkü package.json ve çalışan uygulama oluşturmak için doğru yolu (bunu günlüklerde görebilir) , ekledim ekspres içinde bağımlılık package.json dosyası.
npm install

 "dependencies": {
    "express": "^4.17.1"
}

Geçerli sürümü ile alıyorum npm search express.

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.