ข้อผิดพลาด Node.js: ไม่พบโมดูลด่วน


145

ฉันเขียนแอป node.js แรกของฉัน แต่ไม่พบห้องสมุดด่วน

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)

แต่เอ็กซ์เพรสเป็น intalled (ด้วย-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หรือไม่)


2
ซ้ำซ้อนที่เป็นไปได้ของNodeJS - ไม่สามารถนำเข้าโมดูลส่วนกลาง
Evan Carroll


1
ซ้ำกันที่เป็นไปได้ของnode.js, ข้อผิดพลาด: ไม่พบโมดูล 'express'
Thusila Bandara

คำตอบ:


275

คุณต้องติดตั้ง Express ไว้ในบริบทของแอปพลิเคชันของคุณ ( node_modulesโฟลเดอร์):

$ npm install express

เหตุผลสำหรับสิ่งนี้คือแอปพลิเคชันจะตรวจสอบการอ้างอิงใด ๆ ในท้องถิ่นของตนเสมอ การติดตั้งทั่วโลกนั้นใช้สำหรับการตั้งค่าไบนารี่ที่มีอยู่ทั่วทั้งระบบเท่านั้นเช่นการทดสอบหน่วยวิ่งหรือ bootstrappers หรือสิ่งอื่น ๆ

ด้วย Express เมื่อคุณติดตั้งทั่วโลกคุณจะได้รับexpressไบนารีที่สามารถบูตแอปพลิเคชันให้คุณได้ สำหรับข้อมูลเพิ่มเติมพิมพ์

$ express --help

ดังนั้นเพื่อตอบคำถามสุดท้ายของคุณ: ใช่-gคุณจะต้องติดตั้งได้โดยไม่ต้อง


1
สิ่งนี้ช่วยฉันด้วย ฉันwinstonติดตั้งไปทั่วโลกซึ่งทำงานได้ด้วยเหตุผลบางอย่างเมื่อเริ่มต้นแอปของฉันในฐานะผู้ใช้ปกติ แต่เมื่อเริ่มต้นแอพและสคริปต์เริ่มต้นระบบมันไม่ทำงาน ฉันแก้ไขโดยการติดตั้ง winston ในเครื่องในไดเรกทอรีแอพ (และเพิ่มลงใน package.json)
trusktr

3
คุณสามารถเชื่อมโยงการติดตั้งทั่วโลกที่ติดตั้งโดย cd ไปยังไดเรกทอรีรากโครงการของคุณและจากนั้นใช้ "ลิงก์ NPM <ชื่อการพึ่งพาบางอย่าง>"
khoi nguyen

11
npm ติดตั้งหลังจากที่คุณสร้างแอปของคุณ มันจะติดตั้งการอ้างอิงทั้งหมด

ขอบคุณสิ่งนี้ช่วยได้จริงๆ การไปที่โฟลเดอร์ node_modules และการติดตั้งแบบด่วนช่วยแก้ไขปัญหาของฉันได้แล้ว
Megha

@Golo Roden เขียนคำตอบของคุณฉันได้ลองกับวิธีแก้ปัญหาของคุณแล้ว แต่มันมีข้อผิดพลาดในการโยน: 'npm ERR! tar.unpack ข้อผิดพลาดที่ไม่ถูกต้อง C: \ Users \ VV \ AppData \ Roaming \ npm-cache \ express \ 4.14.0 \ package.tgz npm ERR! Windows_NT 6.3.9600 npm ข้อผิดพลาด! argv "C: \\ โปรแกรมไฟล์ \\ nodejs \\\\ node.exe" "C: \\ โปรแกรมไฟล์ \\ nodejs \\ node_modules \\ npm \\ bin \\ 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%

ใน Windows 10 หลังจากการติดตั้งด่วน npm จะไม่สามารถเพิ่มลงในพา ธ โหนดโดยอัตโนมัติคุณต้องเพิ่มโมดูลโหนดด้วยตนเอง
เจน

5

Golo อธิบายวิธีแก้ปัญหาได้ดี แต่ฉันอาจเพิ่มความกระจ่าง:
บางครั้งมีการติดตั้งโมดูลโหนด

/usr/local/lib/node_modules

และเมื่อคุณเรียกใช้โมดูลโหนด blabla.js จะถูกค้นหา

/lib

ดังนั้นทางออกคือการสร้างลิงค์สัญลักษณ์:

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

1
วิธีที่ง่ายกว่า -> ลิงก์ npm <โมดูล>
Amit G

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' ในโฟลเดอร์โครงการของคุณให้สร้างขึ้นก่อนและวางไฟล์เหล่านั้นลงในโฟลเดอร์นี้ วิธีนี้ใช้ได้กับฉันบนพีซี windows ของฉัน C:\ChatServer\Server>node server.jsเริ่มต้นเซิร์ฟเวอร์โหนดของคุณและเรียกใช้อีกครั้งหนึ่งโหนดคำสั่ง มันควรจะทำงานตอนนี้ !!!!


ทำงานบน windows 10 ด้วย!
Victor Michael Kosgei

3

บนระบบปฏิบัติการที่ใช้ Ubuntu คุณสามารถลองได้

sudo apt-get install node-express

มันทำงานให้ฉันในโรงกษาปณ์


3

เมื่อคุณติดตั้งโหนดบนระบบของคุณแล้วให้ติดตั้ง Express แบบโลคัลสำหรับโครงการของคุณโดยใช้สิ่งต่อไปนี้สำหรับ Windows:

npm install express

หรือ

npm install express --save

คุณอาจให้สิทธิ์การเข้าถึงระดับโลกโดยใช้:

npm install -g express --save

2

ฉันมีข้อผิดพลาดนี้ใน vscode แม้ว่าโมดูลที่ติดตั้ง ฉันใช้ typescript และ express ใน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

สร้างหนึ่งโฟลเดอร์ในฮาร์ดดิสก์ของคุณเช่น sample1 และไปที่ command prompt type: cd และกำหนดพา ธ ของโฟลเดอร์ sample1 แล้วติดตั้งโมดูลทั้งหมด ...

npm ติดตั้งด่วน

ติดตั้งหยก

npm ติดตั้ง socket.io

จากนั้นสิ่งที่คุณสร้างแอปพลิเคชันจะบันทึกในโฟลเดอร์ sample1

ลองมัน...


1

ไปที่ไดเรกทอรีแอปพลิเคชันของคุณและติดตั้งโมดูลด่วนโดยใช้คำสั่งด้านล่าง npm install express - บันทึก จากนั้นแสดงรายการโมดูลการติดตั้งทั้งหมดโดยใช้คำสั่งด้านล่าง npm ls คุณจะเห็นโมดูลการติดตั้งในเครื่องทั้งหมด


1

การติดตั้งด่วนทั่วโลกจะไม่ทำงานในโครงการท้องถิ่นของคุณดังนั้นคุณต้องติดตั้งภายในเครื่องเพื่อใช้งาน

npm install express

หวังว่ามันจะใช้ได้

ขอบคุณ


0

ฉันประสบปัญหาเดียวกัน ฉันติดตั้งด่วนทั่วโลกที่ / usr / local / bin / เมื่อฉันติดตั้ง 'npm' เอ็กซ์เพรสจะไม่ถูกสร้างใน node_modules ของโลคอลไดเร็กทอรี

  1. ตรวจสอบว่าคุณมีชื่อไฟล์. pmrc ใน $ HOME ของคุณหรือไม่
  2. หากมี 'global = true' ให้เปลี่ยนเป็น 'global = false'
  3. ตอนนี้ทำ 'npm install' ในไดเรกทอรีแอปพลิเคชัน มีโอกาสมากขึ้นที่คุณควรได้รับโมดูลที่ขึ้นอยู่กับแพ็คเกจทั้งหมดที่ติดตั้งใน node_modules (ภายในเครื่อง) ภายในไดเรกทอรีแอปพลิเคชัน

0
  • sudo brew ถอนการติดตั้งโหนด
  • ชงการปรับปรุง
  • ชงอัพเกรด
  • ชงล้าง
  • ชงติดตั้งโหนด
  • sudo chown -R $ (whoami) / usr / local
  • ชงลิงค์ - โหนดเขียนทับ
  • sudo brew โหนด postinstall

สิ่งนี้ใช้ได้กับฉันในMacOS X Sierra


0

ฉันไม่ภูมิใจที่จะแบ่งปันสิ่งนี้ แต่ในกรณีของฉันฉันมี:

 require('express.handlebars')

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

0

ฉันมีข้อผิดพลาดเดียวกันตามตัวอย่างในหนังสือเล่มนี้: "Kubernetes Up & Running"
ฉันเห็นคำตอบมากมายที่แนะนำให้ติดตั้งexpress "ด้วยมือ" แต่ฉันไม่มั่นใจว่าเป็นทางออกที่ดีที่สุด
เนื่องจากเรากำลังใช้package.json (ฉันสามารถดูได้ในบันทึก) และวิธีที่ถูกต้องในการสร้างแอปจึงกำลังทำงานอยู่npm installฉันจึงเพิ่มการอ้างอิงด่วนในไฟล์package.json

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

npm search expressฉันจะได้รับรุ่นปัจจุบันด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.