'react-scripts' ไม่รู้จักเป็นคำสั่งภายในหรือภายนอก


94

ฉันมีโครงการ maven ซึ่งเป็นโครงการ JavaScript ที่โคลนเป็นโมดูลย่อย git โครงสร้างไดเร็กทอรีจึงมีลักษณะดังนี้

mavenapp/src/main/javascript/[npm project files]

ภายใน package.json ของฉันการทดสอบมีลักษณะดังนี้: "test": "react-scripts test --env=jsdom",

แต่เมื่อฉันพยายามเรียกใช้การทดสอบ npm มีการพูดว่า

'react-scripts' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก

น่าสนใจเมื่อฉันโคลนโครงการจาวาสคริปต์โดยอิสระฉันไม่ได้รับข้อผิดพลาดนี้ ฉันได้ลองรีรันnpm installแล้ว

npm version : 5.5.1

node version : 9.3.0


ในขณะที่ฉันได้แก้ไขปัญหานี้ตั้งแต่นั้นมาฉันรู้สึกซาบซึ้งที่ได้รวบรวมความสนใจเล็กน้อยและด้วยเหตุนี้จึงอาจมีประโยชน์ในการทำเครื่องหมายคำตอบว่าเป็นคำตอบที่ถูกต้อง ... เปิดรับข้อเสนอแนะจากชุมชนว่าจะเป็นใคร .
J Smith

คำตอบ:


79

เป็นข้อผิดพลาดเกี่ยวกับไฟล์react-scripts ที่หายไปในไดเร็กทอรีโมดูลโหนดของคุณในขณะติดตั้ง

ตรวจสอบการขึ้นต่อสคริปต์ปฏิกิริยาของคุณว่าใช้ได้หรือไม่ในpackage.json

หากไม่มีให้เพิ่มด้วยตนเองผ่าน:

npm ติดตั้ง react-scripts - บันทึก


11
อย่าทำเช่นนี้อาจทำให้เกิดปัญหากับโครงการอื่น ๆ ... คุณไม่ควรติดตั้งสคริปต์ตอบสนองทั่วโลกเช่นนี้ อ้างอิงที่นี่: github.com/facebook/create-react-app/issues/…
Rosdi Kasim

5
@RosdiKasim หลังจากอ่านความคิดเห็นของคุณฉันได้ตระหนักถึงข้อผิดพลาดของฉัน ตอนนี้ฉันได้เปลี่ยนคำสั่งสำหรับโปรเจ็กต์เฉพาะแทนที่จะเป็นโกลบอล (-g)
Yogesh Borad

ไม่มีอะไรเปลี่ยนแปลงสำหรับฉันยังคงเป็นข้อผิดพลาดเดิม การเรียกใช้ "npm install react-scripts --save" แม้ว่าประสบความสำเร็จจะไม่สร้างโฟลเดอร์ react-scripts ในโฟลเดอร์ npm_modules ฉันใช้ Windows10
Giox

@RosdiKasim ตามความคิดเห็นของคุณคุณควรติดตามตอนท้ายของกระทู้ใน Github ฉันพบปัญหาเดียวกันและแก้ไขโดยทำเช่นนี้stackoverflow.com/a/54403797/8719007 (คำตอบด้านล่าง)
Serge Kishiko

45

คุณได้ลอง:

rm -rf node_modules && npm install

การเช็ดnode_modulesก่อนมักมีแนวโน้มที่จะแก้ไขปัญหาแปลก ๆ ที่เกี่ยวข้องกับแพ็คเกจเช่นนี้ใน Node


2
ใช่ฉันมี ... ไม่แตกต่าง ... สำหรับตอนนี้ฉันต้องลบโมดูลย่อยและวางด้วยตนเอง
J Smith

อืมคุณไม่เห็นข้อผิดพลาดใด ๆ ที่บันทึกไว้จากคุณnpm installคือคุณ? ลองเรียกใช้npm install -fและดูว่ามีอะไรเปลี่ยนแปลงหรือไม่ อาจเป็นแพ็คเกจอื่นที่ไม่สามารถติดตั้งและบล็อกไม่ให้ติดcreate-react-appตั้งได้อย่างสมบูรณ์ การบังคับให้ติดตั้ง npm ด้วย-fbtw ไม่ใช่วิธีแก้ปัญหาที่สมบูรณ์ .... เป็นเพียงขั้นตอนการแก้ไขปัญหา หากมีสิ่งใดเปลี่ยนแปลงหลังจากที่คุณเรียกใช้งานแสดงว่ามีบางอย่างผิดปกติกับหนึ่งในแพ็กเกจ
Jonny Asmar

นอกจากนี้คุณอาจต้องการตรวจสอบว่าคุณมีไฟล์ที่javascript/node_modules/.bin/react-scripts. หากไม่เป็นเช่นนั้นอาจมีสาเหตุที่แตกต่างกันหลายประการสำหรับสิ่งนี้ซึ่งรวมถึงปัญหาการอนุญาตข้อ จำกัด ของระบบปฏิบัติการในการสร้างnode_moduels/.binsymlink (ทุกอย่างเป็น symlink ที่สร้างขึ้นเมื่อติดตั้งอาจเป็นไปได้ว่าคุณไม่ได้ติดตั้งสคริปต์ตอบกลับ ... ลอง วิ่งnpm install --save react-scriptsและดูว่าช่วยได้หรือไม่
Jonny Asmar

1
ย้ายจาก MacOS กับ Windows (Dropbox ซิงค์ทั้งหมดnode_modulesโฟลเดอร์) - เพียงลบโฟลเดอร์และติดตั้งใหม่แก้ไขได้
AS

ใช่ - นั่นคือสิ่งที่คำสั่งดังกล่าวทำ อาการของคุณน่าจะเกิดจากแพ็กเกจจำนวนมากที่ดำเนินขั้นตอนการติดตั้งตามเงื่อนไขต่อระบบปฏิบัติการ Linux, Mac และ Windows มีความคลาดเคลื่อนเล็กน้อยกับการอ้างอิงโครงการพื้นฐานจำนวนมาก
Jonny Asmar

31

ถ้าreact-scriptsมีอยู่ในpackage.json

หากคุณเห็นสิ่งนี้ "react-scripts": "2.1.3"ในpakage.jsonไฟล์ของคุณให้ พิมพ์คำสั่งนี้

npm install

หากreact-scriptsไม่มีอยู่ในpackage.json

หากไม่มีอะไรเหมือน"react-scripts"ในpackage.jsonไฟล์ของคุณแสดงว่าคุณยังไม่ได้ติดตั้งหากต้องการทำเช่นนั้นให้พิมพ์คำสั่งต่อไปนี้และคุณจะได้รับการตั้งค่าทั้งหมด

npm install react-scripts --save


1
จะเป็นอย่างไรหากมีใน package.json และติดตั้งด้วย แต่ประสบปัญหาเดียวกัน
Serob_b

@Serob_b บางครั้งฉันก็มีปัญหาเหมือนกันในกรณีนั้นฉันแค่เรียกใช้ "npm install" และมันก็แก้ปัญหาได้ หรือคุณสามารถลบโฟลเดอร์ node_modules ได้ตลอดเวลาโดยพิมพ์ rm "-rf node_modules" ในเทอร์มินัลจากนั้นเรียกใช้ "npm install" หวังว่านี่จะช่วยได้
Hadi Mir

9

ในสถานการณ์ของฉันปัญหาบางอย่างเกิดขึ้นกับแพ็คเกจโหนดของฉัน ดังนั้นฉันจึงเรียกใช้npm audit fixและแก้ไขปัญหาทั้งหมด


9

ฉันประสบปัญหาเดียวกัน แต่การเรียกใช้คำสั่งอัพเดต npmมันช่วยแก้ปัญหาของฉันได้


นั่นคือทางออก ขอบคุณ.
Dzenis H.

3

ฉันแก้ไขปัญหานี้ :-) เพียงแค่ถอนการติดตั้ง node.js ของคุณและแสดงไฟล์ที่ซ่อนอยู่

จากนั้นไปที่ "C: \ Users \ yourpcname \ AppData \ Roaming \

จากนั้นลบโฟลเดอร์ "npm" และ "npm-cache"

และติดตั้ง node.js เวอร์ชันใหม่


2
นี่ไม่ใช่วิธีแก้ปัญหาจริงๆ
ภาณีฤทธิ์วิจิตร

อันนี้ใช้ได้ผลสำหรับฉัน
UA

2

react-scriptsไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอกที่เกี่ยวข้องกับ npm

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

ตัวอย่างเช่น:

"dependencies": {
    "body-parser": "*",
    "express": "*",
    "mongoose": "*",
    "react": "*",
    "react-dom": "*",
    "react-final-form": "*",
    "react-final-form-listeners": "*",
    "react-mapbox-gl": "*",
    "react-redux": "*",
    "react-responsive-modal": "*",
  }

จากนั้นฉันจะตรวจสอบให้แน่ใจว่ามีการลบ package-lock.json ใด ๆ แล้วเรียกใช้การติดตั้ง npm และการติดตั้งเส้นด้ายทั้งในไดเร็กทอรีหลักและไดเร็กทอรีไคลเอ็นต์ด้วยหากมี

จากนั้นคุณจะสามารถรันการสร้างเส้นด้ายจากนั้นใช้เส้นด้ายเริ่มต้นเพื่อรันแอปพลิเคชัน


นี่เป็นคำแนะนำที่ไม่ดี การใช้*หมายเลขเวอร์ชันของคุณเป็นปัญหาเนื่องจากอาจทำให้ติดตั้งแพ็กเกจเวอร์ชันต่างๆในระบบต่างๆ ใช้หมายเลขเวอร์ชันที่ถูกล็อกและอัปเดตตามต้องการ
Dana Woodman

แท้จริงแล้วสิ่งต่างๆอาจผิดพลาดโดยสิ้นเชิงสำหรับวัตถุประสงค์ในการผลิต แต่เป็นเพียงแนวคิดสำหรับการทดสอบเท่านั้น
Ahmedakhtar11


1

สำหรับแอพพกพาเปลี่ยนไป

package.json

ดังต่อไปนี้

"scripts": {
    "start": "node node_modules/.bin/react-scripts start",
    "build": "node node_modules/.bin/react-scripts build",
    "test": "node node_modules/.bin/react-scripts test",
    "eject": "node node_modules/.bin/react-scripts eject"
  }

0

ฉันได้ลองวิธีแก้ไขปัญหานี้หลายวิธีที่พบทางออนไลน์แล้ว แต่ในกรณีของฉันไม่มีอะไรทำงานได้ยกเว้นการติดตั้ง NVM สำหรับ Windows ใหม่ (ซึ่งฉันใช้เพื่อจัดการ Node หลายเวอร์ชัน) ในโปรแกรมติดตั้งจะตรวจพบเวอร์ชันของโหนดที่ติดตั้งและถามผู้ใช้ว่าต้องการให้ NVM ควบคุมหรือไม่ ฉันตอบว่าใช่และ NVM แก้ไขปัญหา PATH ทั้งหมด เป็นผลให้สิ่งต่าง ๆ ทำงานเหมือนเดิม ปัญหานี้อาจมีหลายสาเหตุ แต่ PATH ที่เสียหายเป็นหนึ่งในนั้นแน่นอนและ (อีกครั้ง) การติดตั้ง NVM แก้ไข PATH


0

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


0

ในกรณีของฉันฉันแก้ไขไฟล์ของฉันบน Linux ที่ฉันติดตั้งโหนด v14.0.5 เมื่อฉันรีบูตเป็น Windows ที่ฉันมีโหนด v14.0.3 ฉันได้รับข้อผิดพลาดเดียวกัน ดังนั้นฉันจึงอัปเดตเวอร์ชันโหนดบน windows และทุกอย่างก็ใช้ได้ดีสำหรับฉัน


0

นี่คือวิธีแก้ไข

  1. ตรวจสอบและอัปเดตตัวแปรเส้นทาง (ดูวิธีอัปเดตตัวแปรพา ธ ด้านล่าง)
  2. ลบ node_modules และ package-lock.json
  3. วิ่ง npm install
  4. วิ่ง npm run start

หากไม่ได้ผลให้ลองติดตั้งnodejsและเรียกใช้การซ่อมแซม

หรือล้างแคช npm npm cache clean --force

เพื่ออัปเดตตัวแปรเส้นทาง

  1. กดปุ่ม windows
  2. ค้นหา Edit the system environmental variable
  3. คลิกที่ Environment Variables...
  4. ในส่วนล่างของตัวแปรระบบ (จะมีสองส่วน)
  5. เลือกPathชื่อตัวแปร
  6. คลิก Edit..
  7. ตรวจสอบว่ามีอยู่C:\Program Files\nodejsในรายการหรือไม่หากไม่เพิ่มสิ่งนี้

0

มีปัญหาที่คล้ายกัน .. ฉันใช้เส้นด้ายในการแก้ไข ฉันสังเกตเห็นว่าไม่พบสคริปต์ตอบสนองในโมดูลโหนดของฉันดังนั้นฉันจึงตัดสินใจดาวน์โหลดด้วย npm แต่ดูเหมือนว่าฉันจะล้มเหลวด้วย ดังนั้นฉันจึงลองเส้นด้าย (เส้นด้ายเพิ่มสคริปต์การตอบสนอง) และนั่นช่วยแก้ฝันร้ายได้! หวังว่างานนี้จะเหมาะกับคุณเช่นกัน มีความสุขในการแก้ไขข้อบกพร่องคน


-1

ในกรณีของฉันปัญหาเกี่ยวข้องกับการมีสิทธิ์ไฟล์ไม่เพียงพอสำหรับบางไฟล์ที่การติดตั้งแพคเกจ react-scripts กำลังจะเขียนถึง สิ่งที่แก้ไขได้คือเรียกใช้git bash ในฐานะผู้ดูแลระบบแล้วเรียกใช้npm install --save react-scriptsอีกครั้ง


-2

เมื่อฉันสร้างโครงการใหม่โดยใช้ React ในการติดตั้งโมดูล React ฉันต้องเรียกใช้ "npm install" (PowerShell) จากภายในโฟลเดอร์ ClientApp ของโปรเจ็กต์ใหม่ (เช่น "C: \ Users \ Chris \ source \ repos \ HelloWorld2 \ HelloWorld2 \ ClientApp ") .NET core WebApp ที่มี React จำเป็นต้องติดตั้งไฟล์ React ในตำแหน่งที่ถูกต้องเพื่อให้คำสั่ง React ทำงานได้อย่างถูกต้อง

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