browserify error / usr / bin / env: node: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว


85

ฉันติดตั้งโหนด js และ npm ผ่านการติดตั้ง apt-get และการอ้างอิงทั้งหมดจากนั้นฉันติดตั้ง browserify

npm install browserify -g

มันต้องผ่านกระบวนการและดูเหมือนว่าจะติดตั้งอย่างถูกต้อง แต่เมื่อฉันพยายามทำบันเดิลง่ายๆตามคำแนะนำแบบนี้

ฉันได้รับข้อผิดพลาด:

/ usr / bin / env: node: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว

ใส่คำอธิบายภาพที่นี่


อืมคุณควรตรวจสอบว่าโหนดปฏิบัติการอยู่ใน / usr / bin หรือ / usb / bin / env อย่างน้อยนี่เป็นปัญหาเฉพาะในการดำเนินการ คุณอาจสามารถแก้ปัญหานี้ได้โดยติดตั้ง browserify local
bodokaiser

เบราว์เซอร์ของฉันสามารถเรียกใช้งานได้ใน / usr / local / bin / แต่มันเรียกอย่างอื่นที่ทำให้เส้นทางสับสนหรือไม่
Eduardo Dennis

3
อาคุณต้อง symlink nodejs ไปยังโหนดบน ubuntu Ubuntu ติดตั้งโหนดเป็น nodejs จากนั้นคุณต้องทำบางสิ่งเช่น "ln -s / usr / bin / nodejs / usr / bin / node" เพื่อให้ระบบพบว่าเป็นโหนด
bodokaiser

1
ที่แก้ไขได้: -PI ได้ทำลายหัวของฉันในช่วงเวลาที่ผ่านมาคุณช่วยใส่รูปแบบคำตอบเพื่อยอมรับได้ไหม?
Eduardo Dennis

1
ดีใจที่มันใช้งานได้ไม่แน่ใจว่ามันเป็นปัญหาจริงๆหรือเปล่านั่นคือเหตุผลที่ฉันแสดงความคิดเห็นก่อน :)
bodokaiser

คำตอบ:


246

การกระจาย linux บางตัวติดตั้ง nodejs ไม่ใช่เป็น "node" ที่เรียกใช้งานได้ แต่เป็น "nodejs"

ในกรณีนี้คุณต้องเชื่อมโยงกับ "โหนด" ด้วยตนเองเนื่องจากมีการตั้งโปรแกรมหลายแพ็กเกจหลังจากไบนารี "โหนด" สิ่งที่คล้ายกันนี้ยังเกิดขึ้นกับ "python2" ที่ไม่ได้เชื่อมโยงกับ "python"

ในกรณีนี้คุณสามารถสร้าง symlink อย่างง่ายได้ สำหรับการแจกแจงลินุกซ์ที่ติดตั้งไบนารีแพ็คเกจให้/usr/binคุณสามารถทำได้

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

5
นี่ไม่ใช่วิธีแก้ปัญหาสำหรับ Ubuntu 14.04 เนื่องจาก/usb/sbin/nodeเป็น ax24-node (ไม่เกี่ยวข้องกับ nodejs) เพียงแค่การเชื่อมโยงกับสัญลักษณ์/usr/bin/nodeจะใช้ไม่ได้เพราะ/usr/sbin/nodeมาก่อนใน$PATH
Gareth

8
update-alternativesวิธีที่ถูกต้องในการแก้ปัญหานี้คือการใช้ ดูคำตอบของฉันที่นี่stackoverflow.com/a/24592328/454615
airtonix

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

ใช่ฉันสังเกตเห็นว่ามันแตกออกอย่างละเอียดคุณพบวิธีแก้ปัญหาที่ดีกว่านี้หรือไม่?
Eduardo Dennis

1
@EduardoDennis ใช่ใช้update-alternatives. มันมีอยู่สำหรับสถานการณ์ที่แน่นอนเหล่านี้
airtonix

52

คำตอบใหม่:

  1. ถอนการติดตั้งแพ็คเกจ nodejs ที่คุณติดตั้งผ่านตัวจัดการแพ็คเกจระบบของคุณ (dnf, apt-get ฯลฯ ) ลบ symlink โง่ ๆ ที่คุณสร้างขึ้นใหม่ทุกครั้งที่อัพเกรด (ฮ่า ๆ )
  2. ติดตั้ง NVM
  3. ใช้ nvm เพื่อติดตั้ง nodejs: nvm install 6

คำตอบเก่า:

การพูดถึงการสร้าง symlinks หรือการติดตั้ง node-package อื่น ๆ นั้นเป็นเรื่องปลอมและไม่ยั่งยืน

วิธีที่ถูกต้องในการแก้ปัญหานี้คือ:

  1. ติดตั้งแพ็คเกจ nodejs ด้วย apt-get อย่างที่คุณมีอยู่แล้ว
  2. ใช้update-alternativesเพื่อระบุว่าไบนารี nodejs ของคุณรับผิดชอบ#!/usr/bin/env node

ชอบมาก:

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

ตอนนี้กลายเป็นสิ่งที่ยั่งยืนตลอดการอัพเกรดแพ็คเกจการอัพเกรดระยะไกลและอื่น ๆ


นี่คือวิธีแก้ปัญหาของฉันstackoverflow.com/questions/26155795/…
Alon Carmel

ขอบคุณวิธีแก้ปัญหาที่ยอดเยี่ยมเคล็ดลับที่มี symlink เป็นสิ่งที่ซ้ำกันมากที่สุดบนเน็ต แต่ไม่ได้ผลสำหรับฉัน
Emilia Tyl

คำตอบที่ถูกต้องที่แท้จริงตอนนี้คือการใช้ NVM บน Linux และ Nodist บน Windows
airtonix

35

apt-get install nodejs-legacyวิ่ง

การแจกแจงลินุกซ์บางตัวได้เปลี่ยนชื่อไบนารี node.js ทำให้ไม่เข้ากันได้กับแพ็กเกจ node.js จำนวนมาก แพ็คเกจnodejs-legacyมีลิงก์สัญลักษณ์เพื่อแก้ไขปัญหานี้


2
นี่เป็นวิธีแก้ปัญหาสำหรับ Ubuntu 14.04 เนื่องจาก/usb/sbin/nodeเป็น ax24-node (ไม่เกี่ยวข้องกับ nodejs) เพียงแค่การเชื่อมโยงสัญลักษณ์กับ/usr/bin/nodeจะใช้ไม่ได้เพราะ/usr/sbin/nodeมาก่อนใน$PATH
Gareth

ช่วยฉันออกไป ขอบคุณ!
Lapidus

apt-get install nodejs-legacy กล่าวว่าสำหรับผู้ใช้ windows 'apt-get' ไม่รู้จักเป็นคำสั่งภายในหรือภายนอกโปรแกรมที่ใช้งานได้หรือไฟล์แบตช์
Swift

7

นอกจากนี้คุณยังสามารถติดตั้งใช้ Nodejs NVMหรือNodejs จัดการเวอร์ชัน มีจำนวนมากประโยชน์ที่จะใช้จัดการรุ่น หนึ่งในนั้นคือคุณไม่ต้องกังวลกับปัญหานี้


คำแนะนำ:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

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

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

เพื่อดาวน์โหลดสคริปต์และเรียกใช้งาน ~/.nvmมันจะติดตั้งซอฟต์แวร์ลงในไดเรกทอรีย่อยของไดเรกทอรีบ้านของคุณที่ นอกจากนี้ยังเพิ่มบรรทัดที่จำเป็นให้กับ~/.profileไฟล์ของคุณเพื่อใช้ไฟล์

หากต้องการเข้าถึงฟังก์ชัน nvm คุณจะต้องออกจากระบบและกลับเข้าสู่ระบบอีกครั้งหรือคุณสามารถจัดหาไฟล์ ~ / .profile เพื่อให้เซสชันปัจจุบันของคุณทราบเกี่ยวกับการเปลี่ยนแปลง:

source ~/.profile

เมื่อคุณติดตั้ง nvm แล้วคุณสามารถติดตั้งเวอร์ชัน Node.js ที่แยกได้

หากต้องการทราบเวอร์ชันของ Node.js ที่พร้อมสำหรับการติดตั้งคุณสามารถพิมพ์:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

อย่างที่คุณเห็นเวอร์ชันใหม่ล่าสุดในขณะที่เขียนนี้คือ v0.11.14 คุณสามารถติดตั้งได้โดยพิมพ์:

nvm install 0.11.14

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

nvm use 0.11.14

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

node -v

คุณสามารถดูบทแนะนำเกี่ยวกับ comeplete ได้ที่นี่


ใช่บวกหนึ่งสำหรับผู้จัดการเวอร์ชันสภาพแวดล้อม เป็นคำตอบที่ดีกว่าของฉันอย่างแน่นอนทั้งๆที่เราทั้งคู่เป็นวิธีที่ถูกต้องในการทำเช่นนี้ ฉันจะบอกว่า nvm มุ่งเป้าไปที่เวิร์กสเตชันแบบโต้ตอบไม่ใช่เซิร์ฟเวอร์การผลิต (แต่ฉันไม่เห็นว่าทำไมถึงใช้ที่นั่นไม่ได้) ... โดยส่วนตัวแล้วฉันชอบใช้อิมเมจนักเทียบท่าในการผลิตมากกว่า
airtonix


0

ฉันดูเหมือนปัญหาเดียวกันเมื่อสร้างอะตอมใน Linux

sudo apt-get install nodejs-dev

แก้ไขคำถามของฉันหวังว่าจะเป็นประโยชน์กับคุณ


0

หากคุณไม่ต้องการ symlink คุณสามารถทำได้ ทำงานในอูบุนตู

#!/usr/local/bin/node --harmony

แท็กความสามัคคีมีไว้สำหรับความกลมกลืนของ ECMAscript ใหม่


0
  1. รันคำสั่ง which nodeผลลัพธ์จะเป็นบางอย่าง

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. คัดลอกเส้นทางที่คุณได้รับด้านบนจากนั้นเรียกใช้คำสั่งในขั้นตอนที่ 3

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node


-1

คุณต้องเรียก "nodejs" ไม่ใช่ "node" เพื่อตรวจสอบนี้พิมพ์node -vบนเปลือก: nodejs -vถ้าไม่มีอะไรจะพบลอง ถ้าแสดงว่าหมายเลขรุ่นแล้วคำสั่งที่คุณควรจะใช้เป็นและไม่ได้nodejs nodeดังนั้นคุณต้องเปลี่ยนการเรียกเป็น browserify ในสคริปต์ของคุณจากnodeเป็นnodejs(ดังที่แสดงด้านล่าง): แทนที่

#!/usr/bin/env node

ด้วย

#!/usr/bin/env nodejs

คุณอาจต้องเปิดสคริปต์ในฐานะ superuser

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