Node.js त्रुटि: मॉड्यूल एक्सप्रेस नहीं ढूँढ सकता


145

मैंने अपना पहला नोड.जेएस ऐप लिखा है, लेकिन यह एक्सप्रेस लाइब्रेरी नहीं पा रहा है:

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)

लेकिन एक्सप्रेस को रोक दिया गया है ( -gकुंजी के साथ ):

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)

कुछ जानकारी:

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)

इस समस्या का समाधान किस प्रकार से किया जा सकता है? ( मैं इसे बिना स्थापित करना चाहिए-g ?)




जवाबों:


275

आपको अपने एप्लिकेशन ( node_modulesफ़ोल्डर) के संदर्भ में एक्सप्रेस को स्थानीय रूप से स्थापित करने की आवश्यकता है :

$ npm install express

इसका कारण यह है कि आवेदन हमेशा किसी भी निर्भरता के लिए अपने स्थानीय संदर्भ में देखते हैं। वैश्विक स्थापना केवल सिस्टम-व्यापी उपलब्ध बायनेरिज़ की स्थापना के लिए है, जैसे कि यूनिट टेस्ट रनर्स या बूटस्ट्रैपर्स या उस तरह की चीजें।

एक्सप्रेस के साथ, जब आप इसे विश्व स्तर पर स्थापित करते हैं, तो आपको एक expressबाइनरी मिलती है जो आपके लिए एप्लिकेशन को बूटस्ट्रैप कर सकती है। अधिक जानकारी के लिए, टाइप करें

$ express --help

तो, अपने अंतिम प्रश्न का उत्तर देने के लिए: हाँ , आपको इसे बिना स्थापित करने की आवश्यकता है -g


1
इससे मुझे भी मदद मिली। मैंने winstonविश्व स्तर पर स्थापित किया था , जो सामान्य उपयोगकर्ता के रूप में अपना ऐप शुरू करते समय किसी कारण से काम करता था, लेकिन जब मेरा ऐप और सिस्टम इनिट स्क्रिप्ट शुरू करता है तो यह काम नहीं करेगा। मैंने इसे ऐप डायरेक्टरी में स्थानीय रूप से विंस्टन को स्थापित करके (और पैकेज.जसन में जोड़कर) तय किया।
trusktr

3
आप अपने प्रोजेक्ट रूट डायरेक्टरी में cd के द्वारा एक वैश्विक संस्थापित निर्भरता को लिंक कर सकते हैं और फिर "npm लिंक <कुछ निर्भरता नाम>" का उपयोग कर सकते हैं
khoi nguyen

11
npm इंस्टॉल करने के बाद आपने अपना ऐप बनाया है। यह सभी निर्भरताएँ स्थापित करेगा।

धन्यवाद यह वास्तव में मदद की। नोड_मॉडल फ़ोल्डर में जाने और एक्सप्रेस स्थापित करने से मेरी समस्या हल हो गई
मेघा

@Golo रोडेन आपके जवाब को स्वीकार करते हुए मैंने आपके समाधान के साथ प्रयास किया लेकिन यह त्रुटि फेंक रहा है: 'npm ERR! tar.unpack untar error C: \ Users \ VV \ AppData \ Roaming \ npm-cache \ express \ 4.14.0 \ package.tgz npm ERR! Windows_NT 6.3.9600 npm ERR! argv "C: \\ Program Files \\ नोडज \\\\ node.exe" "C: \\ प्रोग्राम फाइलें \\ नोडज \\ नोड_मॉड्यूल्स \\ npm \\ बिन \\ npm-cli .js" "इंस्टॉल करें" " एक्सप्रेस "
VjyV

20

मेरे लिए यह तब काम किया जब स्थानीय रूप से एक्सप्रेस - फॉलो विकल्प के रूप में स्थापित किया गया:

$ npm install express --save

12

जांचें कि क्या आप expressमॉड्यूल स्थापित नहीं कर रहे हैं , इस कमांड का उपयोग करें:

 npm install express

और यदि आपकी node_modulesनिर्देशिका किसी अन्य स्थान पर है, तो NODE_PATHएन्वायरमेंट वैरिएबल सेट करें:

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

Npm स्थापित एक्सप्रेस के बाद विंडोज 10 में, यह स्वचालित रूप से नोड पथ में नहीं जोड़ा जा सकता है, आपको इसे नोड मॉड्यूल को मैन्युअल रूप से जोड़ना होगा।
जेन

5

गोलो ने अच्छी तरह से समाधान समझाया है, लेकिन मैं एक स्पष्टीकरण जोड़ सकता हूं:
कभी-कभी नोड मॉड्यूल स्थापित होते हैं

/usr/local/lib/node_modules

और जब आप नोड blabla.js लॉन्च करते हैं, तो मॉड्यूल खोजे जाते हैं

/lib

तो एक समाधान एक प्रतीकात्मक लिंक बनाने के लिए है:

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

1
आसान तरीका -> npm लिंक <मॉड्यूल>
अमित जी

4

आपके मामले में आपका expressमॉड्यूल स्थापित है C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express, लेकिन आपको इस मॉड्यूल को अपनी परियोजना निर्देशिका में लाने की आवश्यकता है। तो आपको फ़ाइल expressफ़ोल्डर C:\Users\Dmitry\AppData\Roaming\npm\node_modules\को अपने प्रोजेक्ट डायरेक्टरी से कॉपी करना चाहिए जैसे C:\ChatServer\Server\node_modules:। यदि आपके पास अपने प्रोजेक्ट फ़ोल्डर में 'node_modules' नाम का फ़ोल्डर नहीं है, तो पहले इसे बनाएं और उन फ़ाइलों को इस फ़ोल्डर में पेस्ट करें। यह विधि मेरे लिए मेरी विंडोज़ पीसी पर काम करती है। अपने नोड सर्वर को पुनरारंभ करें और एक बार फिर कमांड नोड चलाएं C:\ChatServer\Server>node server.js। यह अब काम करना चाहिए !!!!


विंडोज 10 पर भी काम किया!
विक्टर माइकल कोस्गेई


3

यह देखते हुए कि आपने अपने सिस्टम पर नोड स्थापित किया है, विंडोज के लिए निम्न का उपयोग करके अपनी परियोजना के लिए स्थानीय रूप से एक्सप्रेस स्थापित करें:

npm install express

या

npm install express --save

आप इसका उपयोग करके इसे वैश्विक पहुंच दे सकते हैं:

npm install -g express --save

2

मुझे यह त्रुटि vscode में थी, हालांकि मॉड्यूल जहां स्थापित थे। मैं टाइपस्क्रिप्ट और एक्सप्रेस का उपयोग कर रहा हूं। में server.tsफ़ाइलों सभी आयातों टेढ़ा-मेढ़ा रेखांकन लाल था। यह पता चला है कि मेरे पास एक दोषपूर्ण 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

अपने हार्डडिस्क में एक फोल्डर बनाएं जैसे नमूना 1 और कमांड प्रॉम्प्ट प्रकार पर जाएं: सीडी और नमूना 1 फ़ोल्डर का रास्ता देता है और फिर अपने मॉड्यूल स्थापित करें ...

npm स्थापित एक्सप्रेस

npm स्थापित जेड

npm स्थापित socket.io

और फिर आप जो कुछ भी बना रहे हैं उसे सैंपल 1 फोल्डर में सेव करें

कोशिश करो...


1

अपने एप्लिकेशन डायरेक्टरी में जाएं और नीचे दिए गए कमांड एनपीएम इंस्टॉल एक्सप्रेस का उपयोग करके एक्सप्रेस मॉड्यूल को स्थापित करें - इसके बाद नीचे दिए गए कमांड एनपीएम का उपयोग करके सभी इंस्टॉल मॉड्यूल को सूचीबद्ध करें ls आप सभी स्थानीय रूप से स्थापित मॉड्यूल देखेंगे।


1

विश्व स्तर पर एक्सप्रेस स्थापित करना आपके स्थानीय प्रोजेक्ट पर काम नहीं करेगा, इसलिए आपको इसे उपयोग के लिए स्थानीय रूप से स्थापित करने की आवश्यकता है।

npm install express

उम्मीद है कि यह काम करेगा

धन्यवाद


0

मैंने उसी समस्या को मारा। मैंने विश्व स्तर पर / usr / स्थानीय / बिन / पर स्थापित किया था। जब मैं 'एनपीएम इंस्टॉल' करता हूं, तो स्थानीय निर्देशिका के नोड_मॉड्यूल्स में एक्सप्रेस नहीं बनाया गया था।

  1. जाँच करें कि क्या आपके पास अपने $ HOME में फ़ाइल का नाम .npmrc है
  2. यदि इसके पास 'वैश्विक = सत्य' है, तो 'वैश्विक = गलत' में बदल दें
  3. अब एप्लिकेशन डायरेक्टरी में 'npm install' करें। अधिक संभावना है, आपको अनुप्रयोग निर्देशिका में नोड_मॉड्यूल्स (स्थानीय) में स्थापित सभी पैकेज निर्भर मॉड्यूल मिलना चाहिए।

0
  • sudo brew अनइंस्टॉल नोड
  • काढ़ा अद्यतन
  • काढ़ा अपग्रेड
  • काढ़ा साफ करें
  • काढ़ा स्थापित नोड
  • सुडो चाउना -R $ (whoami) / usr / स्थानीय
  • काढ़ा लिंक --overwrite नोड
  • sudo brew पोस्ट स्थापना नोड

इसने मेरे लिए मैकओएस एक्स सिएरा पर काम किया


0

मुझे यह साझा करने पर गर्व नहीं है, लेकिन मेरे मामले में:

 require('express.handlebars')

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

0

इस पुस्तक पर उदाहरण के बाद मुझे वही त्रुटि हुई: "कुबेरनेट्स अप एंड रनिंग"।
मैं एक्सप्रेस को "हाथ से" स्थापित करने का सुझाव देने वाले कई उत्तर देखता हूं, लेकिन मुझे यकीन नहीं है कि सबसे अच्छा समाधान है।
क्योंकि हम package.json का उपयोग कर रहे हैं (मैं इसे लॉग्स में देख सकता हूं) और एप्लिकेशन बनाने का सही तरीका चल रहा है npm install, मैंने पैकेज . json फ़ाइल में एक्सप्रेस निर्भरता को जोड़ा ।

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

मुझे वर्तमान संस्करण मिल गया है npm search express

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.