ฉันจะแก้ไขข้อผิดพลาด“ ไม่สามารถหาโมดูล” โดยใช้ Node.js ได้อย่างไร


616

หลังจากดึงโมดูลจาก GitHub และทำตามคำแนะนำเพื่อสร้างฉันลองดึงมันลงในโครงการที่มีอยู่โดยใช้:

> npm install ../faye

สิ่งนี้ดูเหมือนจะทำเคล็ดลับ:

> npm list
/home/dave/src/server
└─┬ faye@0.7.1
  ├── cookiejar@1.3.0
  ├── hiredis@0.1.13
  └── redis@0.7.1

แต่ Node.js ไม่พบโมดูล:

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

ฉันต้องการที่จะเข้าใจสิ่งที่เกิดขึ้นที่นี่จริง ๆ แต่ฉันก็รู้สึกว่าจะหายไปไหน ข้อเสนอแนะใด ๆ


8
node_modulesไดเรกทอรีคาดว่าจะอยู่ในรากของโครงการของคุณ, alongisde app.jsในกรณีของคุณ ทำไมคุณถึงใช้..พา ธ การติดตั้ง npm
Alex Wayne

1
หลังจากเปลี่ยน "npm install ../faye" เป็น "npm install ../faye/build" ก็ทำงานได้ตามปกติ ฉันไม่ทราบว่าสิ่งนี้เป็นเรื่องปกติ แต่ faye สร้างไดเรกทอรีการสร้างเมื่อมันถูกสร้างขึ้นและวางสำเนา package.json ไว้ในนั้น npm ไม่ได้บ่นเกี่ยวกับ package.json ที่ระดับ root แต่เป็นการอ้างอิงไฟล์ที่ไม่มีอยู่ในระดับนั้น
Dave Causey

2
ฉันแก้ไขปัญหา แต่ไม่ได้รับการแก้ไขใด ๆ กับคำถามจริงของฉันซึ่งเป็นวิธีการแก้ไขปัญหานี้ ฉันจะพยายามหาคำแนะนำสำหรับการปรับปรุง npm และ / หรือโหนดเพื่อให้ผู้มาใหม่ง่ายขึ้นเพื่อหลีกเลี่ยงสถานการณ์นี้
Dave Causey

1
ผ่านลิงค์นี้คุณอาจได้รับความคิดเหมือนที่มันล้มเหลวในการค้นหาโมดูลของคุณ ..
Amol M Kulkarni

1
ตรวจสอบสภาพอากาศที่คุณอยู่ในโฟลเดอร์เดียวกับที่คุณติดตั้งหรือไม่ หากคุณไม่ได้ติดตั้งไว้ทั่วโลก
Ashwani Panwar

คำตอบ:


513

การใช้การnpm installติดตั้งโมดูลลงในไดเรกทอรีปัจจุบันเท่านั้น (ในไดเรกทอรีย่อยที่เรียกว่าnode_modules) app.js อยู่ภายใต้home/dave/src/server/หรือไม่ ถ้าไม่ได้และคุณต้องการที่จะใช้โมดูลจากไดเรกทอรีใด ๆ npm install -gที่คุณจำเป็นต้องติดตั้งทั่วโลกใช้

ฉันมักจะติดตั้งแพคเกจส่วนใหญ่ในประเทศเพื่อให้พวกเขาได้รับการตรวจสอบพร้อมกับรหัสโครงการของฉัน

อัปเดต (8/2019):

ทุกวันนี้คุณสามารถใช้ไฟล์package-lock.jsonซึ่งสร้างขึ้นโดยอัตโนมัติเมื่อ npm แก้ไขไดเร็กทอรี node_modules ของคุณ ดังนั้นคุณสามารถออกจากการตรวจสอบในแพ็กเกจเนื่องจากpackage-lock.jsonติดตามเวอร์ชันที่แน่นอนของ node_modules ที่คุณกำลังใช้งานอยู่ การติดตั้งแพคเกจจากpackage-lock.jsonแทนการใช้คำสั่งpackage.jsonnpm ci

อัปเดต (3/2559):

ฉันได้รับสะเก็ดระเบิดมากมายสำหรับการตอบกลับของฉันโดยเฉพาะอย่างยิ่งที่ฉันเช็คอินแพ็คเกจที่รหัสของฉันขึ้นอยู่กับ ไม่กี่วันที่ผ่านมามีคนไม่ได้เผยแพร่แพ็คเกจทั้งหมดของพวกเขา ( https://kodfabrik.com/journal/i-ve-just-liberated-my-modules ) ซึ่งทำลาย React, Babel และทุกอย่างอื่น หวังว่าจะชัดเจนในตอนนี้ว่าถ้าคุณมีรหัสการผลิตคุณจะไม่สามารถพึ่งพา NPM ได้จริง ๆ เพื่อรักษาความไว้วางใจให้คุณ


264
"ฉันมักจะติดตั้งแพคเกจส่วนใหญ่ในพื้นที่เพื่อให้พวกเขาได้รับการตรวจสอบพร้อมกับรหัสโครงการของฉัน" โดยปกติแล้วจะเป็นการดีกว่าที่จะแสดงpackage.jsonรายการโมดูล npm ที่คุณพึ่งพาและเพิกเฉยต่อnode_modulesโฟลเดอร์ จากนั้นเพียงแค่npm installทำการตั้งค่าหลังจากที่คุณคัดลอก repo
Alex Wayne

53
นอกเหนือจากการแสดงpackage.jsonรายการการพึ่งพาฉันต้องการเก็บสำเนาที่ดีของสิ่งที่ฉันรู้ พื้นที่ดิสก์ราคาถูกและถ้า npm หรือแพ็กเกจหายไปจาก npm ฉันจะยังคงมีโครงการที่ใช้งานได้อย่างสมบูรณ์ใน repo ของฉัน
Bill

165
ในฐานะนักพัฒนาเก่าฉันเกือบสำลักเมื่อฉันอ่าน Node devs "กระบวนทัศน์" ที่ "พื้นที่ว่างในดิสก์ราคาถูก" ฉันมีห้องสมุดที่ฉันใช้อยู่ ความคิดที่ว่าฉันอาจมี 100 เล่ม (หรือแย่กว่านั้นคือใกล้เคียง) ทำให้ท้องฉันเปลี่ยน พื้นที่ดิสก์มีราคาถูก แต่เวลาบำรุงรักษาแพง บางทีถ้าคุณทำโครงการของเล่นแบบใช้ครั้งเดียวการบำรุงรักษาจะถูก อย่างไรก็ตามสำหรับการทำงานจริงการบำรุงรักษานั้นมีราคาแพงและไม่มีผลกระทบต่อต้นทุนของพื้นที่ดิสก์
Lloyd Sargent

66
ฉันไม่เข้าใจความคิดเห็นล่าสุดนี้ ไม่มีใครบอกว่ามี 100 ชิ้นส่วนของรหัสใด ๆ เพียงเพื่อให้มี 1 สำเนาของรหัสที่โครงการของคุณขึ้นอยู่กับ ทางเลือกคือให้มีโครงการที่ไม่สามารถใช้งานได้หาก NPM หรือการพึ่งพาหายไปหนึ่งวัน ฉันคิดว่าการเขียนการอ้างอิงใหม่จากศูนย์ยังมีราคาแพงอีกด้วย นอกจากนี้ฉันทำงานที่ Microsoft เป็นเวลา 10 ปีและเรามักจะตรวจสอบการอ้างอิงของบุคคลที่สามในซอร์สต้นไม้
Bill

33
@LloydSargent การมี "NEAR ก๊อปปี้" นั้นไม่เลวร้ายไปกว่านั้นดีกว่าเพราะแต่ละโปรเจ็กต์มีการพึ่งพาเฉพาะที่คุณได้กำหนดไว้และส่วนที่เหลือของโค้ดของคุณอาศัย หากคุณมีเดียวกันรุ่นทั่วหลายโครงการแล้วถ้าคุณอัปเดตอะไรที่คุณจะต้องอัปเดตทุกอย่าง การพึ่งพาการปักหมุดทำให้การบำรุงรักษาน้อยลงอย่างมากโดยไม่ต้องบำรุงรักษามากนัก ทำงานจริงไม่ใช่โครงการของเล่น
Dave Newton

459

ฉันมีปัญหาที่คล้ายกันมาก การลบnode_modulesโฟลเดอร์ทั้งหมดและการติดตั้งใหม่ใช้งานได้สำหรับฉัน:

rm -rf node_modules
npm install

13
ฉันยังอยากจะทำแคช NPM สะอาดเช่นเดียวกับสิ่งที่ความปลอดภัย :)
โทนี่เหงียนไท

1
อาจเป็นขั้นตอนการแก้ไขปัญหาแรกที่ดีเมื่อใดก็ตามที่ปัญหาการพึ่งพาที่แปลก ๆ ปรากฏขึ้นว่าnpm install/ npm updateจะไม่แก้ปัญหา วิธีนี้แก้ไขปัญหาที่Error: Cannot find module 'http-errors'เริ่มแสดงแบบสุ่มเมื่อฉันพยายามเรียกใช้แอพ Express ของฉัน
Matt Vukas

น่าทึ่ง @ คำตอบของ @ carelesslyChoosy แก้ไขการพึ่งพาที่ขาดหายไป ดูเหมือนว่าการอัปเกรดและการดาวน์เกรดด้วยการติดตั้ง npm จะไม่ทำให้สิ่งต่าง ๆ เป็นระเบียบ
ปลาไหล gEEEEz

3
ขั้นตอนที่หายไปที่นี่คือการลบไฟล์แพคเกจ lock.json npm installของคุณก่อนที่จะใช้
Rick Quantz

สิ่งนี้ไม่ได้ผลสำหรับฉันแม้แต่รีสตาร์ทคอมพิวเตอร์;)
Jason G

83
npm install --save module_name

ตัวอย่างเช่นหากข้อผิดพลาดคือ:

{[ข้อผิดพลาด: ไม่สามารถหาโมดูล '/root/.npm/form-data'] โมดูล: 'MODULE_NOT_FOUND'}

npm install --save form-dataจากนั้นคุณสามารถแก้ไขปัญหานี้โดยการดำเนินการคำสั่ง


1
ดูเหมือนว่าเมื่อฉันติดตั้งทั่วโลกโฟลเดอร์ npm / node-modules ว่างเปล่าและฉันพยายามที่จะใช้ng new project-nameมันก็แสดงโมดูลบางส่วนที่ขาดหายไป ... ฉันต้องติดตั้งพวกเขาแต่ละคนโดยใช้คำสั่งที่กำหนดจากนั้นก็แก้ปัญหาได้ มีคำสั่งเดียวที่จะติดตั้งทั้งหมดในครั้งเดียว?
Vishal Nair

25

สำหรับผู้ใช้ typescript ถ้าคุณกำลังนำเข้าในตัวโมดูลโหนด (เช่นhttp, pathหรือurl) และคุณจะได้รับข้อผิดพลาดเช่น"Cannot find module "x"แล้วความผิดพลาดสามารถแก้ไขได้โดยการทำงาน

npm install @types/node --save-dev

คำสั่งจะนำเข้าคำจำกัดความของ NodeJS TypeScript ไปยังโครงการของคุณเพื่อให้คุณสามารถใช้โมดูลในตัวของโหนด


18

สิ่งนี้เกิดขึ้นเมื่อการติดตั้งnpmครั้งแรกล้มเหลวด้วยเหตุผลบางประการ (SIGINT of npm) หรือว่าการหน่วงเวลานั้นยาวเกินไปหรือข้อมูลเสียหาย การลองติดตั้ง npm อีกครั้งจะไม่บันทึกปัญหา

มีบางอย่างผิดพลาดในการตรวจสอบ npm ครั้งแรกดังนั้นทางเลือกที่ดีที่สุดคือการลบไฟล์และเริ่มการติดตั้ง npm ใหม่


16
สิ่งนี้วินิจฉัยปัญหาให้ฉันแล้ว ฉันสิ้นสุดทำnpm cache clearและล้างออก node_modules ตามด้วยnpm installเพื่อแก้ไขปัญหาของฉัน
meklarian

9

หากคุณใช้ nvm ให้ตรวจสอบว่า node_modules ที่มีอยู่ซึ่งเชื่อมโยงกับไลบรารีอื่นถูกคอมไพล์สำหรับเวอร์ชัน Node.js ที่ถูกต้อง

ฉันมีข้อผิดพลาดเดียวกัน เหตุผลมีดังต่อไปนี้: เราใช้ nvm เนื่องจากเราใช้แอพสองตัวบนเซิร์ฟเวอร์หนึ่งต้องการ Node.js 5.6 เพราะมันใช้ node-gd (ซึ่งไม่ได้ทำงานบน Node.js 6 สำหรับตอนนี้) อีกอันต้องการ Node.js 6. Node.js 6 เป็นการติดตั้งapt-get

นอกจากนี้เรายังใช้เครื่องมือ pm2 เพื่อปรับใช้

ดังนั้นการตั้งค่าเริ่มต้นคือกระบวนการ pm2 เริ่มต้นเมื่อ nvm ไม่มีผลดังนั้นจึงใช้การติดตั้ง apt-get ของ Node.js (เวอร์ชัน 6) ดังนั้น pm2 daemon หลักจึงเริ่มต้นด้วย Node.js 6 หากฉันรันแอปพลิเคชันในโหมด fork พวกเขาเริ่มต้นในกระบวนการที่แยกต่างหากและการตั้งค่า nvm มีผลบังคับใช้ เมื่อฉันรันแอปพลิเคชั่นในโหมดคลัสเตอร์ - พวกเขาสืบทอดสภาพแวดล้อมที่ไม่ใช่ nvm

ดังนั้นเมื่อฉันพยายามที่จะเปลี่ยนเป็นโหมดคลัสเตอร์แอปพลิเคชันล้มเหลวในการเริ่มต้นเนื่องจากการรวมที่รวบรวมสำหรับ 5.6 ล้มเหลวด้วยข้อความนี้

ฉันได้แก้ไขแล้วโดยการรีสตาร์ท pm2 เมื่อการตั้งค่า nvm มีผล นอกจากนี้สคริปต์เริ่มต้นควรได้รับการแก้ไข


คุณตรวจสอบได้อย่างไร
tamj0rd2

8

ตรวจสอบว่าตัวแปรสภาพแวดล้อม NODE_PATH ตั้งค่าไว้อย่างถูกต้องและชี้ไปที่เส้นทาง node_modules nodejs ใช้ตัวแปรนี้เพื่อค้นหาไลบรารี


ฉันอัปโหลดสิ่งนี้เนื่องจากมันแก้ไขปัญหาเฉพาะหน้าของฉันและนำฉันไปสู่เอกสารประกอบ node.jsนี้ แต่ฉันคิดว่านี่ไม่ใช่คำตอบแบบครอบคลุมเนื่องจากเอกสารระบุถึงกลยุทธ์ทางเลือกสำหรับการค้นหาโมดูล
Graham Klyne

6

ฉันพบข้อผิดพลาดนี้เมื่อวานนี้ เอาฉันสักครู่เพื่อรับรู้ว่าmainรายการในpackage.jsonชี้ไปที่ไฟล์ที่ฉันย้าย เมื่อฉันอัปเดตว่าข้อผิดพลาดหายไปและแพคเกจทำงาน


2
วัวศักดิ์สิทธิ์ ... หมดหวังฉันพิมพ์ใน "ข้อผิดพลาด: ไม่สามารถหาโมดูล" ลงใน google และพบคำถามนี้ คำตอบของคุณแก้ไขปัญหาของฉัน ฉันไม่อยากจะเชื่อเลยว่าคำค้นหาที่คลุมเครือนั้นเป็นคำตอบที่ถูกต้อง ขอชื่นชมคุณและ Google!
Jamon Holmgren

1
อย่างนี้มาก ฉันจัดการเพื่อชี้mainรายการสำหรับ submodule ของฉันในไดเรกทอรีที่แยกออกจากที่เก็บของมันดังนั้นเมื่อฉันพยายามที่จะรวมมันผ่านการnpm installทำงาน แต่ไม่พบการส่งออกเมื่อจำเป็นต้องใช้ใน! ขอบคุณมากสำหรับคำตอบที่ชัดเจน แต่มีประโยชน์นี้
Dragos

ขอบคุณสำหรับสิ่งนี้. ฉันมีสถานการณ์นี้ในขณะที่ใช้พื้นที่ทำงานของเส้นด้ายดังนั้นจึงมองหาอัลกอริธึมการแก้ไขพา ธ และทุกประเภท :) ฉันถูกโยนโดยวิธีการที่ข้อความแสดงข้อผิดพลาดพูดถึง 'ค้นหา' โมดูลและ ESLint ก็ให้ข้อความแสดงข้อผิดพลาดที่คล้ายกัน จากนั้นฉันก็เห็นคำตอบของคุณและรู้ตัวว่าฉันเป็นคนบ้า ขอบคุณ!
Mark Birbeck

5

นำคุณnode_moduleโฟลเดอร์รากจากโครงการของคุณ (เช่นmyApp) ไปที่myAppโฟลเดอร์แล้วพิมพ์คำสั่งด้านล่างจากเทอร์มินัล

>myApp>npm install

มันจะติดตั้งโมดูลการพึ่งพาทั้งหมดที่จำเป็นสำหรับโครงการของคุณ


คุณช่วยอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับโซลูชันที่คุณให้ได้ไหม
abarisone

5

ข้อผิดพลาดนี้สามารถพบได้ถ้าคุณกำลังrequireโมดูลที่มีmainเขตข้อมูลที่ขาดหายไปหรือไม่ถูกต้องใน package.json แม้ว่าจะติดตั้งโมดูลเองแล้ว npm / node ต้องใช้ไฟล์. js เดียวเป็นจุดเข้าใช้งานโมดูลของคุณ หากไม่มีmainฟิลด์ดังกล่าวค่าเริ่มต้นคือการค้นหาindex.jsในโฟลเดอร์โมดูลของคุณ หากไฟล์หลักโมดูลของคุณจะไม่ได้เรียกว่า index.js ก็จะไม่สามารถที่จะrequireมัน

ค้นพบขณะเลี้ยว browserifyโมดูล -basedโมดูล CommonJS require-able; browserifyไม่สนใจเกี่ยวกับmainฟิลด์ที่หายไปและข้อผิดพลาดจึงไม่มีใครสังเกต


4

ระบุพา ธ ไปยังโฟลเดอร์ restler ซึ่งจะอยู่ในโฟลเดอร์ node_modules เช่น: var rest = require ('./ node_modules / restler');

สิ่งนี้ใช้ได้สำหรับฉัน


3

หากคุณกำลังใช้ typescript package-lock.jsonและได้รับข้อผิดพลาดหลังจากการติดตั้งโมดูลโหนดแล้วเอา npm installและเรียกใช้แล้ว


2

เคล็ดลับ PRO:

ข้อผิดพลาดนี้เกิดขึ้นกับฉันในขณะที่ต่อสู้กับความเหนื่อยล้าและความเจ็บป่วยเล็กน้อยเพราะฉันพิมพ์node blahแทนnpm blahแทน

ได้รับข้อความแสดงข้อผิดพลาดไม่ได้โกรธพอที่จะแจ้งเตือนฉันถึงความเขลาของฉัน!


2

ฉันประสบปัญหาเดียวกันเมื่อมีคนอื่นในทีมอัพเดตpackage.jsonใน SVN การลบnode_modulesไดเรกทอรีเพียงอย่างเดียวไม่ได้ช่วยอะไร ฉันจะแก้ไขปัญหาได้อย่างไร:

rm -rf node_modules
rm package.json
rm package-lock.json
svn up
npm install
ng build --env=prod

หวังว่านี่จะช่วยใครซักคน!


ขอบคุณสำหรับการเตือน ในกรณีของฉันมันเป็น package-lock.json เลอะสิ่งต่าง ๆ อีกครั้ง แต่หลังจากลบมันและ node_modules แล้วทำงานnpm installทั้งหมดเป็นอย่างดีอีกครั้ง
TaeKwonJoe

6
หากคุณลบpackage.jsonNPM จะรู้ได้อย่างไรว่าจะติดตั้งอย่างไร
Michał

1

ฉันสามารถเพิ่มอีกหนึ่งที่เพื่อตรวจสอบได้ แพคเกจที่ฉันพยายามใช้เป็นอีกหนึ่งแพ็คเกจที่ฉันได้เผยแพร่ไปยัง repo ส่วนตัวของ NPM ฉันลืมกำหนดค่าคุณสมบัติ 'หลัก' ใน package.json อย่างถูกต้อง ดังนั้นแพ็คเกจอยู่ในโฟลเดอร์ node_modules ของแพ็กเกจที่บริโภค แต่ฉันได้รับ "ไม่สามารถหาโมดูล" ใช้เวลาสองสามนาทีในการตระหนักถึงความผิดพลาดของฉัน :-(


1

ในกรณีของฉันฉันUNMET PEER DEPENDENCY redux@^3.0.0ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้ให้ดูทั้งหมดและติดตั้งโมดูลที่ขาดหายไปอีกครั้งโดยใช้ - บันทึก

npm install redux --save

1

การลบโหนด / npm จากนั้นติดตั้งเวอร์ชันเสถียร (ไม่ใช่เวอร์ชันล่าสุด) ใหม่ให้ฉัน

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

https://nodejs.org/en/download/

1

ในAppsome Solutionsเรามีปัญหาเดียวกันกับการกำหนดค่าโครงการแบบ typescript ของเราและเพิ่ม"moduleResolution": "node",ใน tsconfig.json แก้ไขได้


0

ฉันพยายามเผยแพร่แพ็คเกจของตัวเองแล้วรวมไว้ในโครงการอื่น ฉันมีปัญหานั้นเพราะวิธีการที่ฉันสร้างโมดูลแรก ฉันใช้การส่งออก ES2015 เพื่อสร้างโมดูลเช่นสมมติว่าโมดูลดูเหมือนว่า:

export default function(who = 'world'){
    return `Hello ${who}`;
}

หลังจากรวบรวมกับ Babel และก่อนเผยแพร่:

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});

exports.default = function () {
    var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0];


    return 'Hello ' + who;
};

ดังนั้นหลังจากnpm install module-nameในโครงการอื่น (ไม่มี ES2015) ฉันต้องทำ

var hello = require('module-name').default;

เพื่อรับแพคเกจที่นำเข้าจริง

หวังว่าจะช่วย!


0

พบปัญหานี้เมื่อใช้webpackกับwebpack-dev-middlewareกับ

เปลี่ยนไฟล์เดียวเป็นโฟลเดอร์โฟลเดอร์

ผู้เฝ้าดูดูเหมือนจะไม่เห็นโฟลเดอร์ใหม่และโมดูลก็หายไป

แก้ไขโดยการรีสตาร์ทกระบวนการ


0

เพิ่งพบสถานการณ์ที่ผิดปกติซึ่งอาจมีประโยชน์กับใครบางคนและเป็นปลาเฮอริ่งแดง

ฉันยังได้รับข้อผิดพลาดไม่สามารถหาโมดูลได้ แต่ทุกอย่างทำงานผิดปกติอย่างสมบูรณ์ในสภาพแวดล้อมท้องถิ่นของฉัน (โฮสต์บน Mac) Node.js ปัญหานี้จะปรากฏขึ้นเมื่อรหัสถูกปรับใช้บนเซิร์ฟเวอร์ Linux ของเรา

ดี ... มันกลายเป็นตัวพิมพ์ใหญ่ที่เห็นได้ชัดว่าการติดตั้งบน Mac ของ Node.js นั้นมีความสุขอย่างมาก

รวมถึงมีลักษณะเช่นนี้:

var S3Uploader = require('./S3Uploader.class');

แต่ไฟล์จริงเรียกว่า "s3Uploader.class.js"

สังเกตเห็นความแตกต่างของปลอกใน 's' กับ 'S' ระหว่างรหัสและชื่อไฟล์

ดังนั้น - ในโอกาสที่แปลกประหลาดที่ไม่มีวิธีแก้ไขปัญหาอื่นที่นี่แก้ปัญหาของคุณตรวจสอบสามครั้งว่าคุณไม่ได้ใส่ตัวละครผิดในชื่อไฟล์ที่คุณรวมไว้! :)

และ DUH!


1
โดยค่าเริ่มต้นระบบไฟล์ osx (HFS +) เป็นกรณีที่ไม่รู้สึก ... ค้นพบเมื่อไม่นานที่ผ่านมามันกำหนดแน่นอนว่า
giulp

0

อาจเหมือนกับฉันคุณตั้ง 'ดูเครื่องมือ' ในการแสดงไปยังเครื่องยนต์ที่ไม่มีอยู่หรือพยายามที่จะใช้เครื่องยนต์ templating ที่ไม่ได้ลงทะเบียน ตรวจสอบให้แน่ใจว่าคุณใช้: app.engine('engine name',engine) app.set('view engine','engine name')


0

โปรดติดตั้ง CLI v3 ใหม่ (npm install -g ionic @ ล่าสุด)

หากปัญหานี้ยังคงมีปัญหาใน CLI v3 ขอบคุณ!


0

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


-3

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

(Psst! ฉันไม่แน่ใจว่าฉันประสบความสำเร็จในการช่วยแก้ไขข้อผิดพลาดข้างต้นหรือถ้าฉันทำผิดกฎหรือรูปแบบของการตอบคำถามบางอย่าง แต่ฉันต้องเผชิญกับข้อผิดพลาดข้างต้นและคนอื่น ๆ และใช้เวลาหา คำตอบที่เหมาะสมสำหรับข้อผิดพลาดเหล่านั้นฉันกำลังเขียนวิธีแก้ปัญหาที่สมบูรณ์เพราะในกรณีที่ถ้ามีคนอื่นประสบข้อผิดพลาดเหล่านี้

ดังนั้นการเพิ่มและอธิบายคำตอบที่จัดทำโดยPrashanthiDeviและยังเพิ่มประสบการณ์ส่วนตัวของฉันนี่คือ:

ฉันยังใหม่กับ e2e ทั้งหมดและส่วนการทดสอบหน่วย ฉันเริ่มดูส่วนนี้จากไม้โปรแทรกเตอร์ไม้โปรแทรกเตอร์ตอนนี้ฉันมีไฟล์ที่เขียนการทดสอบแล้ว แต่ฉันต้องเรียกใช้การทดสอบ

ฉันได้ติดตั้งซอฟต์แวร์และเครื่องมือที่จำเป็นทั้งหมดแล้ว แต่เมื่อฉันเริ่มใช้งานรหัสเพื่อใช้ในการทดสอบgulp itestฉันได้รับข้อผิดพลาด 'ไม่พบโมดูล'ข้อผิดพลาดหลังจากผ่านคำถามต่าง ๆ มากมายใน SO ฉันพบคำตอบหนึ่งที่ฉันคิดว่าสามารถช่วยแก้ปัญหาได้

บุคคลแนะนำให้เรียกใช้คำสั่ง npm installในโฟลเดอร์โครงการของฉัน

เหตุผลสำหรับการทำเช่นนี้คือการปรับปรุงโหนดโมดูลโฟลเดอร์ในโฟลเดอร์โครงการของเรากับไฟล์ทั้งหมดที่จำเป็นและจำเป็นและการอ้างอิง

(ส่วนด้านล่างอาจไม่เกี่ยวข้องกับคำถามนี้ แต่อาจมีประโยชน์หากมีคนเจอสถานการณ์เดียวกันกับที่ฉันเผชิญ)

ขั้นตอนข้างต้นย่อมแก้ไขข้อผิดพลาดก่อนหน้าของฉัน แต่โยนใหม่! คราวนี้เกิดข้อผิดพลาดCould not find chromedriver at '..\node_modules\protractor\selenium\chromedriver'ขณะนี้มีข้อผิดพลาดอยู่

อย่างไรก็ตามการแก้ปัญหาของข้อผิดพลาดนี้ค่อนข้างโง่ (และตลก) สำหรับฉัน ฉันมีไฟล์ Chromedriver ในโฟลเดอร์ซีลีเนียมแล้ว แต่ปรากฎว่ามีข้อผิดพลาดด้านบนเกิดขึ้นเพราะไฟล์Chromedriverของฉันอยู่ในโฟลเดอร์ซีลีเนียมและไม่อยู่ใน โฟลเดอร์Chromedriver ดังนั้นการสร้างโฟลเดอร์Chromedriverและคัดลอกไฟล์ Chromedriver ที่นั่นช่วยแก้ปัญหาของฉันได้!

นอกจากนี้สำหรับข้อผิดพลาด: หมดเวลารอเซิร์ฟเวอร์ WebDriverคุณสามารถเพิ่มบรรทัดของรหัสนี้ลงในไฟล์conf.jsภายในexports.config{}:

seleniumAddress: 'http://localhost:8080/'

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


-4

ฉันได้วิธีง่ายๆในการแก้ปัญหานี้

เพียงลบ C: \ Users \ ชื่อผู้ใช้ \ AppData \ Roaming \ npm \

จากนั้นติดตั้งโหนด

ตอนนี้ปัญหาของคุณจะได้รับการแก้ไข


เขาใช้ยูนิกซ์ ไม่ใช่ Windows
Saif Al Falah

-4

รันคำสั่งต่อไปนี้เท่านั้น:

npm install

มันจะติดตั้งโมดูลที่จำเป็นทั้งหมดในnode_modulesโฟลเดอร์



-38

เปลี่ยนไดเรกทอรีและชี้ไปที่โฟลเดอร์โครงการปัจจุบันของคุณแล้วเลือก "ติดตั้ง npm" .

สิ่งนี้จะติดตั้งการพึ่งพาและโมดูลทั้งหมดลงในโฟลเดอร์โครงการของคุณ


2
คำตอบนี้ดูเหมือนจะไม่ผิดฉันรู้สึกว่าการลงคะแนนลบเป็นผลมาจากความลำเอียงและสนับสนุนความคิดเห็นประชดประชัน
Muqsith

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