ติดตั้งแพ็กเกจโหนด (Grunt) แล้ว แต่ไม่พร้อมใช้งาน


187

ฉันพยายามที่จะสร้างห้องสมุด GitHub jQuery UI-ใช้gruntแต่หลังจากทำงานnpm installก็ยังไม่สามารถเรียกใช้คำสั่งตามแฟ้ม readme มันให้No command 'grunt' found:

james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ grunt build
No command 'grunt' found, did you mean:
 Command 'grun' from package 'grun' (universe)
grunt: command not found
james@ubuntu:~/Documents/projects/ad2/lib/jquery-ui$ npm ls
jquery-ui@1.9.0pre /home/james/Documents/projects/ad2/lib/jquery-ui
├─┬ grunt@0.3.9 
 ├── async@0.1.18 
 ├── colors@0.6.0-1 
 ├─┬ connect@1.8.7 
  ├── formidable@1.0.9 
  ├── mime@1.2.5 
  └── qs@0.5.0 
 ├── dateformat@1.0.2-1.2.3 
 ├─┬ glob-whatev@0.1.6 
  └─┬ minimatch@0.2.4 
    └── lru-cache@1.0.6 
 ├─┬ gzip-js@0.3.1 
  ├── crc32@0.2.2 
  └── deflate-js@0.2.2 
 ├── hooker@0.2.3 
 ├─┬ jshint@0.5.9 
  ├── argsparser@0.0.6 
  └─┬ minimatch@0.2.4 
    └── lru-cache@1.0.6 
 ├─┬ nodeunit@0.6.4 
  ├── tap-assert@0.0.10 
  └─┬ tap-producer@0.0.1 
    ├── inherits@1.0.0 
    ├── tap-results@0.0.2 
    └── yamlish@0.0.5 
 ├─┬ nopt@1.0.10 
  └── abbrev@1.0.3 
 ├─┬ prompt@0.1.12 
  ├── pkginfo@0.2.3 
  └─┬ winston@0.5.11 
    ├── eyes@0.1.7 
    ├─┬ loggly@0.3.11 
     └── timespan@2.2.0 
    └── stack-trace@0.0.6 
 ├── semver@1.0.13 
 ├─┬ temporary@0.0.2 
  └── package@1.0.0 
 ├── uglify-js@1.0.7 
 ├── underscore@1.2.4 
 └── underscore.string@2.1.1 
├── grunt-compare-size@0.1.4 
├─┬ grunt-css@0.2.0 
 ├── csslint@0.9.8 
 └── sqwish@0.2.0 
├── grunt-html@0.1.1 
├── request@2.9.153 
├─┬ rimraf@2.0.1 
 └── graceful-fs@1.1.8 
└─┬ testswarm@0.2.2 
  └── request@2.9.202 

ฉันสับสนฉันจะพลาดอะไรได้บ้าง

คำตอบ:


412

เครื่องมือบรรทัดคำสั่งไม่รวมอยู่ใน Grunt เวอร์ชั่นล่าสุด (0.4 ขณะที่เขียน) แทนที่จะต้องติดตั้งแยกต่างหาก

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

ดังนั้นก่อนติดตั้งเครื่องมือ cli grunt ทั่วโลก:

npm install -g grunt-cli

(หรืออาจจะsudo npm install -g grunt-cli)

คุณสามารถสร้างที่ทำงานได้โดยการพิมพ์ grunt --version

ตอนนี้คุณสามารถติดตั้งเวอร์ชันปัจจุบันของ Grunt ภายในโครงการของคุณ ดังนั้นจากที่ตั้งโครงการของคุณ ...

npm install grunt --save-dev

save-devสวิทช์ไม่จำเป็นอย่างเคร่งครัด แต่เป็นความคิดที่ดีเพราะมันจะทำเครื่องหมายแสมในส่วน package.json devDependencies ในฐานะผู้พัฒนาโมดูลเท่านั้น


5
ฉันไม่พบพา ธ ของโฟลเดอร์ grunt ใน Path System Variables หลังจากรัน npm install -g grunt-cli
singsuyash

10
ต้องทำงานโดยใช้ sudo
Phil Hudson

2
หากวิธีนี้ใช้ไม่ได้ผลให้ลองถอนการติดตั้ง grunt และ grunt-cli จากนั้นทำอีกครั้ง ใช้งานได้สำหรับฉันถ้าฉันใช้sudoขอบคุณ Tom!
Termato

หมายเหตุ: หากคุณต้องใช้ sudo นั้นจะทำอย่างไรกับการตั้งค่าโหนด มันไม่เหมาะ แต่สามารถแก้ไขได้ sindresorhus แสดงให้เห็นวิธีหนึ่ง ฉันชอบใช้NVM (ตัวจัดการเวอร์ชันโหนด)
Tom P

1
หากคุณอยู่ที่นี่และคุณกดnode not foundหลังจากเรียกใช้คำสั่งข้างต้นและคุณใช้ตัวจัดการแพคเกจเพื่อติดตั้งโหนดแล้วคุณจะต้องsudo ln -s /usr/local/bin/nodejs /usr/local/bin/node
เชื่อมโยง

26

เพิ่ม/usr/local/share/npm/bin/ของคุณ$PATH


ขอบคุณการเพิ่มสิ่งนี้ลงใน. bash_profile ของฉันช่วยแก้ไขปัญหาของฉันได้!
Thilak Rao

2
เพิ่ม$HOME/npm/binทำงานให้ฉันใน Ubuntu 13.10
Eliran Malka

24

หากคุณได้ติดตั้งแพคเกจ Grunt โดยการเรียกใช้npm install -g gruntและมันยังคงพูดNo command 'grunt' foundหรือgrunt: command not foundวิธีที่รวดเร็วและสกปรกในการทำให้การทำงานนี้เป็นการเชื่อมโยงโหนไบนารีไปยัง $ PATH ของคุณด้วยตนเอง

บน MacOSX / Linux คุณสามารถเพิ่มบรรทัดนี้ในไฟล์~/.bash_profileหรือของคุณ~/.bashrc

PATH=$PATH:/usr/local/Cellar/node/HEAD/bin # Add NPM binaries

คุณอาจจะแทนที่ /usr/local/Cellar/node/HEAD/binด้วยพา ธ ที่พบโหนดไบนารีของคุณ

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

PS: สิ่งนี้จะช่วยให้คุณทำงานเสี้ยงฮึดฮัดแสดงความเห็นคำตอบนี้ไม่เกี่ยวข้อง jquery-ui

Update 02/2013 : คุณควรดูคำตอบของ @ tom-pซึ่งจะอธิบายสิ่งที่เกิดขึ้นได้ดียิ่งขึ้น ทอมจะช่วยให้เราแก้ปัญหาจริงแทนการลักลอบไฟล์ bashrc ของคุณ: ทั้งสองควรทำงาน แต่คุณควรลองติดตั้งgrunt-cliครั้งแรก


ดูคำตอบอื่น ๆ - ที่ให้คำอธิบาย
Yugal Jindle

คุณช่วย clairfy ว่า Cellar อยู่ที่นี่ได้ไหม? นี่เป็นสิ่งเฉพาะสำหรับคุณ / การติดตั้งของคุณหรือไม่
Brian C

12

ในกรณีของฉันฉันต้องการแก้ไขไฟล์ / usr / local / bin / grunt ในบรรทัดที่ 1 (อย่าทำสิ่งนี้):

 #!/usr/bin/env node //remove this line
 #!/usr/bin/env nodejs // and put this line to run with nodejs

แก้ไข:

เพื่อหลีกเลี่ยงปัญหาฉันสร้างลิงค์ด้วยชื่อ "node" เพราะโปรแกรมอื่น ๆ อีกมากมายยังคงใช้คำสั่ง "node"

 sudo ln -s /usr/bin/nodejs /usr/sbin/node

6
สร้างสรรค์ downvote เพื่อห้ามไม่ให้ใครก็ตามแก้ไขไฟล์ที่แพ็กเกจด้วยตนเอง apt-get install nodejs-legacyสำหรับปัญหาของคุณคุณต้อง
ออกอากาศ

ข้อเสนอแนะของคุณเป็นหนึ่งในข้อเสนอแนะใหม่ล่าสุดและเป็นข้อเสนอเดียวที่ทำงานกับการติดตั้ง Debian Jessie ใหม่ล่าสุดของฉัน
Helzgate

Ok Air แต่ฉันใช้ OSX ฉันจะลองทำสิ่งต่าง ๆ เช่นbrew install nodejs-leacy
Edgard Leal

@Air ขอบคุณนั่นเป็นปัญหาของฉัน หลังจากทำตามทุกขั้นตอนก่อนหน้านี้ก็ไม่สามารถที่จะรับรู้เสียงฮึดฮัด
kemicofa ghost

11

มีอีกวิธีหนึ่งในการรันเสียงฮึดฮัดบน windows โดยไม่ต้องเพิ่มอะไรทั่วโลก เป็นกรณีนี้เมื่อคุณไม่ต้องทำอะไรกับ% PATH%

หากคุณมี grunt และ grunt-cli ติดตั้ง (ไม่มีสวิตช์ -g) โดย:

npm install grunt-cli
npm install grunt@0.4.5

หรือโดยมีสิ่งนั้นในไฟล์ packages.json ของคุณเช่น:

"devDependencies": {
    "grunt-cli": "^1.2.0",
    "grunt": "^0.4.5",

คุณสามารถเรียกเสียงฮึดฮัดจากการติดตั้งในพื้นที่ของคุณโดย:

node node_modules\grunt-cli\bin\grunt --version

นี่เป็นวิธีแก้ปัญหาสำหรับผู้ที่มีเหตุผลบางอย่างที่ไม่ต้องการหรือไม่สามารถเล่นกับ PATH หรือมีบางสิ่งบางอย่างที่เลอะเทอะตลอดเวลาเช่นในตัวแทนการสร้าง

แก้ไข: เพิ่มเวอร์ชันในขณะที่ grunt-cli ทำงานร่วมกับ grunt> 0.3


คนที่ใช้นักเทียบท่าอาจพบว่ามีประโยชน์
Daniel Kmak

11

ใน Win7 ฉันต้องเพิ่มเส้นทางไปยังโฟลเดอร์ npm ด้วยตนเอง (ซึ่งมีไฟล์ 'grunt' ที่เข้าใจยาก) ไปยังตัวแปรสภาพแวดล้อม Windows PATH
ในกรณีของฉันนั่นคือC:\Users\mhaagsma\AppData\Roaming\npm


2

วิธีที่ถูกต้องในการติดตั้ง grunt คือการรันคำสั่งนี้:

npm install grunt -g

(เติม "sudo" ให้กับคำสั่งด้านบนหากคุณได้รับข้อความแสดงข้อผิดพลาด EACCESS)

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


6
โปรดทราบว่าถ้าคุณทำสิ่งนี้ (ฉันเพิ่งทดสอบ) gruntจะยังคงล้มเหลวเนื่องจากแพ็คเกจเสี้ยงฮึดฮัดไม่ได้รวมเครื่องมือบรรทัดคำสั่งใด ๆ grunt-cliคุณจำเป็นต้อง
ออกอากาศ

3
เห็นได้ชัดว่าคุณต้องการทั้งในระดับท้องถิ่นและระดับโลก
Adonis K. Kakoulidis

1
การติดตั้งทั่วโลก (สำหรับความต้องการบรรทัดคำสั่ง), การติดตั้งในท้องถิ่นสำหรับความต้องการประเภท "ต้องการ (อะไรก็ตาม)" ดังนั้นคุณต้องทำทั้งสองอย่าง ขอบคุณสำหรับความช่วยเหลือของคุณ!
prograhammer

1

สวัสดีฉันมีปัญหานี้กับ mac และสิ่งที่ฉันทำคือ

ติดตั้งทั่วโลกและคำนำหน้าด้วยเส้นทางทั่วโลก

sudo npm install grunt -g --prefix=/usr/local

ตอนนี้ $ which grunt

ควรออกวาง /usr/local/bin/grunt

ไชโย


0

บางครั้งคุณต้องให้npm install package_name -gมันทำงาน


ขอบคุณสำหรับคำตอบ. ฉันพบวิธีที่แตกต่างในสิ่งที่ฉันพยายามจะทำ
AJP

@AJP คุณสามารถบอกเราได้ว่าคุณทำงานได้อย่างไรแทนที่จะบอกให้คุณรู้ ขอบคุณ
rayfranco

@rayfranco ขอโทษฉันโดยทั่วไปได้รอบโดยให้ขึ้น ... ฉันคิดว่าเราพยายามที่จะทำให้ห้องสมุด jquery-ui บางทีดังนั้นเราเพิ่งดาวน์โหลดมันจำไม่ได้เลยตอนนี้แม้ว่า ... ขอโทษฉันรู้ว่ามันไม่มีประโยชน์ โปรดโพสต์คำตอบกลับเมื่อคุณค้นหา ดูเหมือนว่าคนอื่น ๆ มาที่หน้านี้ (ไม่สำเร็จ)
AJP


0

บน Windows ส่วนหนึ่งของความลึกลับดูเหมือนจะเป็นที่ที่ npm ติดตั้งไฟล์ Grunt.cmd ขณะที่อยู่ในกล่อง Linux ของฉันฉันต้องเรียกใช้ sudo npm install -g grunt-cli บนแล็ปท็อปทำงาน Windows 8 ของฉัน Grunt ถูกวางในไดเรกทอรี '.npm-global':% USER_HOME% \. npm-global และฉัน ต้องเพิ่มเข้าไปใน Path

ดังนั้นใน Windows ขั้นตอนของฉันคือ:

  • npm install -g grunt-cli

  • หาว่า heck grunt.cmd อยู่ที่ไหน (ฉันเดาว่ามันอยู่ใน% USER_HOME% \ App_Data \ Roaming)

  • เพิ่มตำแหน่งให้กับตัวแปรสภาพแวดล้อม Path ของฉัน เปิดพร้อมต์ cmd ใหม่และคำสั่ง grunt ทำงานได้ดี


0

ใน Windows 10 เพิ่มสิ่งนี้ในเส้นทางของคุณ:

%APPDATA%\npm

สิ่งนี้อ้างอิงถึงโฟลเดอร์ ~/AppData/Roaming/npm

[สมมติว่าคุณได้วิ่งไปแล้วnpm install -g grunt-cli]

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