node.js ข้อผิดพลาด: ไม่พบโมดูล 'express'


125

ฉันยังใหม่กับ Node.js ลองเรียนรู้ Express เพื่อสร้างเว็บแอปพลิเคชันแรกของฉัน ฉันติดอยู่กับโค้ดตัวอย่างแรกของฉันและต้องการความช่วยเหลือเพื่อให้มันทำงานได้ ก่อนที่ฉันจะโพสต์คำถามนี้ฉันค้นหาใน stack overflow พบคำถามที่คล้ายกัน แต่ก็ยังไม่สามารถแก้ไขได้

ข้อผิดพลาด: ไม่พบโมดูล "express"

ผมใช้Mac OS 10.8.2 ฉันติดตั้ง Node.js โดยใช้nvmไฟล์.

node.js: 0.8.20 พา ธ ไปยังโหนด: /Users/feelexit/nvm/v0.8.20/bin/node พา ธ เพื่อแสดง: / Users / feelexit / nvm / node_modules / express

นี่คือรหัสตัวอย่างของฉัน: ไฟล์นี้อยู่ที่:

/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js

var express = require('express');

var app = express();

app.get('/', function(req, res){

    res.send('welcome to express');
});

app.listen(3000);

เมื่อฉันพยายามเรียกใช้คำสั่งนี้ node index.js

ฉันได้รับข้อความแสดงข้อผิดพลาดดังต่อไปนี้โปรดช่วยฉันแก้ไข

ขอบคุณ.

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:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js:1:81)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
feelexits-Mac:node_modules feelexit$ 

อัปเดตเพื่อตอบคำถามของ chovy:

feelexits-Mac:~ feelexit$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.2.0
npm ERR! command "/Users/feelexit/nvm/v0.8.20/bin/node" "/Users/feelexit/nvm/v0.8.20/bin/npm" "install"
npm ERR! cwd /Users/feelexit
npm ERR! node -v v0.8.20
npm ERR! npm -v 1.2.11
npm ERR! path /Users/feelexit/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/feelexit/npm-debug.log
npm ERR! not ok code 0

อาจจะช่วยให้stackoverflow.com/questions/9133784/…
user568109

31
คุณพิมพ์npm install
chovy

1
คุณแน่ใจหรือไม่ว่าไลบรารีด่วนอยู่ในโฟลเดอร์ "node_modules" ของคุณ คุณอาจต้องการลองย้ายไฟล์index.jsของคุณขึ้นหนึ่งไดเร็กทอรีไปที่ "/ Users / feelexit / WebstormProjects / learnnode /" และปล่อยให้โฟลเดอร์ node_modules อยู่คนเดียว
ค่าเริ่มต้น

1
กรุณาโพสต์package.jsonไฟล์ของคุณ ที่จะช่วยในการแก้ไขปัญหา
Akhil Raina

@chovy ฉันใช้ npm install express เพื่อติดตั้ง express เฉพาะ "npm install" ทำอะไรได้บ้าง?
qinking126

คำตอบ:


157

มันบอกว่า

 Cannot find module 'express'

คุณได้ติดตั้งด่วนหรือไม่ถ้าไม่ให้เรียกใช้สิ่งนี้

 npm install express

และเรียกใช้โปรแกรมของคุณอีกครั้ง


1
สิ่งนี้ไม่สามารถแก้ไขปัญหาในกรณีของฉันได้ npm install expressแสดงข้อผิดพลาดnpm ERR! Error: UNKNOWN, symlink '../express/bin/express'นี้ ดูเหมือนจะเป็นประเด็นที่ลึกกว่า
Sliq

ใช้ sudo หากคุณยังไม่ได้แก้ไขการอนุญาตไดเรกทอรีของคุณสำหรับ npm ไม่ว่าในกรณีใด "sudo npm install" เป็นตัวเลือกที่ดีกว่า
Gaurav Gupta

ข้อผิดพลาด symlink มักเกิดขึ้นหากคุณติดตั้งสิ่งต่างๆทั่วโลกและใช่ symlink พัง ลองnpm linkสร้างการเชื่อมโยงตามลำดับอีกครั้ง ...
Frank Nocke

@Sliq ฉันลองใช้วิธีแก้ปัญหาของคุณแล้ว แต่ฉันแก้ปัญหาไม่ได้คุณช่วยฉันได้ไหม
VjyV

อย่ามองข้าม "และเรียกใช้โปรแกรมของคุณอีกครั้ง" ในกรณีของฉันฉันต้องเริ่มกระบวนการใหม่ในprocess managerไฟล์. มันไม่ได้รีสตาร์ทเอง
ธ เดช

42

หลังจากที่คุณแสดงออกในเทอร์มินัลของคุณแล้วให้ทำ

 npm install

เพื่อติดตั้งการอ้างอิงทั้งหมด

จากนั้นคุณสามารถทำแอปโหนดเพื่อเรียกใช้เซิร์ฟเวอร์


7
คุณควรชี้ให้เห็นว่าสิ่งนี้ต้องใช้ไฟล์รายการแพ็คเกจคือ. json .. และนี่ก็ไม่ได้เป็นเช่นนั้นเสมอไป
Pogrindis

@VjyV ในไดเร็กทอรีเดียวกับที่คุณมีไฟล์โหนด. js แต่ควรมีไฟล์ package.json ในไดเร็กทอรีเพื่อให้สามารถติดตั้งการอ้างอิงที่ต้องการได้
Saurabh Rana

34

ตรวจสอบว่าคุณได้ติดตั้งexpressโมดูลหรือไม่ ถ้าไม่ใช้คำสั่งนี้:

npm install express

และหากnode_modulesไดเรกทอรีของคุณอยู่ในที่อื่นให้ตั้งค่าNODE_PATHตัวแปรสภาพแวดล้อม:

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

12
นี่คือคำตอบที่ถูกต้องสำหรับทุกคนที่โพสต์CTRL+C / CTRL+V npm installคำตอบเหล่านี้: คุณคิดว่าจะมีใครพยายามเรียกใช้บางสิ่งโดยไม่ตรวจสอบว่าติดตั้งก่อนหรือไม่? อย่างจริงจัง ...
Claudio Holanda

3
เพียงแค่เพิ่มรายละเอียดเล็กน้อย: คุณต้องเรียกใช้คำสั่ง install express ในไดเร็กทอรีของแอปพลิเคชันของคุณไม่ใช่ในโฟลเดอร์การติดตั้ง Node.js หรือโฟลเดอร์ npm ใน AppData เพราะนั่นเป็นความผิดพลาดที่ฉันทำเพราะฉันคิดว่ามันเป็น SDK-add-on
Alex

29

 npm install - บันทึกด่วน   
สิ่งนี้ใช้ได้ผลสำหรับฉันเพียงแค่เรียกใช้การติดตั้ง express.js อีกครั้ง


11

การติดตั้ง npm จากภายในไดเรกทอรีแอปของคุณจะแก้ไขปัญหาได้เนื่องจากจะติดตั้งทุกสิ่งที่จำเป็น


5

ขุดเธรดเก่าที่นี่ แต่ฉันมีข้อผิดพลาดเดียวกันนี้และฉันแก้ไขโดยไปที่ไดเร็กทอรี NodeApp ของฉันและทำงานอยู่ npm install -d


ไม่แน่ใจว่าทำไมหรืออย่างไรจึงสำคัญ แต่สิ่งนี้จะติดตั้งใน devdependencies ของคุณ: docs.npmjs.com/cli/install
Guy Lowe

1
@GuyLowe -dคือ debug สำหรับ npm -Dคือ dev dependencies
John Pavek

4

ถ้าคุณตั้งNODE_PATHตัวเลือกเดียวที่อื่น ๆ npm install express --saveคือการติดตั้งด่วนในไดเรกทอรีแอปเช่น Express อาจได้รับการติดตั้งแล้ว แต่nodeไม่พบด้วยเหตุผลบางประการ


อันนี้ใช้ได้ผลสำหรับฉันดีกว่ารันคำสั่ง install ในไดเร็กทอรีเดียวกับไฟล์. js ของคุณ นอกจากนี้คุณสามารถเรียกใช้คำสั่ง "npm init" เพื่อสร้างไฟล์ package.json เพื่อหลีกเลี่ยงปัญหาเพิ่มเติม
emarshah

3

คุณมีโมดูลด่วนของคุณอยู่ในไดเร็กทอรีอื่นที่ไม่ใช่โปรเจ็กต์ของคุณ นั่นอาจเป็นปัญหาเนื่องจากคุณพยายามทำrequire()ในพื้นที่ ลองย้ายโมดูลด่วนของคุณจากการ/ ผู้ใช้ / feelexit / NVM / node_modules / แสดงการ/ ผู้ใช้ / feelexit / WebstormProjects / learnnode / node_modules / แสดง ข้อมูลนี้สามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับโครงสร้างไฟล์ node_module


2

หากไฟล์หลักของคุณอยู่ที่/Users/feelexit/WebstormProjects/learnnode/node_modules/index.jsExpress จะต้องอยู่ที่/Users/feelexit/WebstormProjects/learnnode/node_modules/node_modulesเนื่องจากโหนดจะค้นหาโมดูลใน./node_modules(และโฟลเดอร์ภายใน) เสมอเมื่อเส้นทางไม่เริ่มต้นด้วย./หรือ/( ข้อมูลเพิ่มเติมที่นี่ )

ฉันคิดว่าคุณพลาดวางไฟล์หลักไว้ในโฟลเดอร์โมดูล


2

สำหรับสถานการณ์นี้ให้รันคำสั่ง npm install express โดยใช้พรอมต์ cmd ของคุณสำหรับโฟลเดอร์ที่คุณต้องการเรียกใช้โปรแกรม ตัวอย่างฉันต้องการรันโปรแกรมโมดูลด่วน server.js ใน F: \ nodeSample ดังนั้นให้รัน "npm install express" ในโฟลเดอร์นั้นจากนั้นเรียกใช้ server.js


1

เรียกใช้npm install express body-parser cookie-parser multer --saveคำสั่งในไดเร็กทอรีเดียวกันกับไฟล์ nodejs ซอร์สโค้ดของคุณเพื่อแก้ไขปัญหานี้ P / s: ตรวจสอบไดเร็กทอรีของคุณหลังจากรันคำสั่งเพื่อทำความเข้าใจเพิ่มเติม!


1

ในบางกรณีที่เกิดขึ้นไม่บ่อยแคช npm อาจเสียหาย สำหรับฉันสิ่งที่ได้ผลคือ:

npm cache clean --force

โดยทั่วไปตัวจัดการแพ็กเกจจะตรวจพบความเสียหายและดึงข้อมูลใหม่ด้วยตัวเองดังนั้นจึงไม่จำเป็น อย่างไรก็ตามในกรณีของฉัน Windows 10 ขัดข้องสองสามครั้งและฉันสงสัยว่านี่อาจเกิดขึ้นระหว่างการดำเนินการดึงข้อมูล หวังว่าจะช่วยใครสักคน!

ข้อมูลเพิ่มเติม: https://docs.npmjs.com/cli/cache


1

ฉันเจอปัญหาที่คล้ายกันและในที่สุดมันก็เป็นเรื่องของการอ้างอิงเก่า ๆ ที่ทำให้เซิร์ฟเวอร์ Heroku ของฉันสับสน

ขณะอยู่ที่โฟลเดอร์โครงการของฉันฉันเรียกใช้:

npm uninstall
npm install

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


0

npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'

สิ่งนี้เกิดขึ้นเนื่องจากไม่มีสิทธิ์หรือไฟล์ที่ไม่ได้ลิงก์ในขณะที่ npm ทำงาน

หมายความว่าการดำเนินการnpmในฐานะผู้ใช้รายนี้ไม่มีสิทธิ์เพียงพอที่จะอ่าน / เขียนจากไฟล์ในกรณีนี้คือ package.json

ลองเพิ่มsudoก่อนคำสั่งทั้งหมด - ควรแก้ไข

$ sudo npm install -g express
$ Password:*******

รหัสผ่านจะเป็นรหัสผ่านผู้ดูแลระบบของเครื่อง Mac ของคุณ

-gแฟล็กจะติดตั้งโมดูลนี้ (ด่วน) ในบริบทส่วนกลางของโหนด - หมายความว่าโหนดจะ / ควรรู้จักexpressโมดูลจากภายในไฟล์ js ใด ๆ โดยไม่ต้องระบุพา ธ แบบเต็มไปยังโมดูลที่ใช้งาน

หวังว่านี่จะช่วยได้ !!


0

ผมมีปัญหาเหมือนกัน. ปัญหาของฉันคือฉันต้องเปลี่ยนเป็นไดเร็กทอรีโปรเจ็กต์ Node.js บนบรรทัดคำสั่งก่อนที่จะติดตั้ง express

cd /Users/feelexit/WebstormProjects/learnnode/node_modules/

0

ฉันเดาว่านี่เป็นหลักสูตรจากหลักสูตร Web Development ของ Colt Steele ... ฉันกำลังมองหาคำตอบเหมือนกันว่าทำไมฉันถึงลงเอยด้วยข้อผิดพลาดนั้นด้วย .. Colt ไม่ได้พูดอย่างนั้น แต่คุณใช้โฟลเดอร์ node_module แล้วย้าย ลงในโฟลเดอร์ใหม่ที่คุณกำลังทำงานอยู่ ... นั่นคือสิ่งที่ใช้ได้ผลสำหรับฉัน


0
D:\learn\Node.js\node app.js
module.js:549
    throw err;
    ^

Error: Cannot find module 'body-parser'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

บางครั้งเวอร์ชันไม่ตรงกับ package.json แก้ไขปัญหาโดยตรวจสอบ package.json จากนั้นใช้คำสั่งต่อไปนี้: npm install body-parser@1.13.2 ได้รับการแก้ไขให้ฉัน


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