nvm เก็บโหนด“ ลืม” ไว้ในเทอร์มินัลเซสชันใหม่


546

เมื่อใช้เทอร์มินัลเซสชันใหม่ใน OS X ให้nvmลืมรุ่นโหนดและค่าเริ่มต้นเป็นไม่มีอะไร:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

ฉันต้องกดปุ่มnvm use v.0.11.13ทุกครั้ง:

         .nvm
     v0.11.12
->   v0.11.13

ฉันลองทั้งการbrewติดตั้งรวมถึงสคริปต์การติดตั้งอย่างเป็นทางการ

.profileสำหรับรุ่นชงของฉัน:

#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

และสำหรับสคริปต์ install.sh:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

#nvm
export NVM_DIR="/Users/farhad/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

เบาะแสอะไรกับสิ่งที่ฉันทำผิด?


1
เพียงแค่ต้องการเพิ่มที่นี่ - ให้แน่ใจว่าคุณส่งออกจาก.bash_profileและไม่ใช่ของคุณ.bashrc
James111

คำตอบ:


1181

ลองnvm alias defaultดู ตัวอย่างเช่น:

$ nvm alias default 0.12.7

สิ่งนี้ตั้งค่าเวอร์ชันโหนดเริ่มต้นในเชลล์ของคุณ จากนั้นตรวจสอบว่าการเปลี่ยนแปลงนั้นยังคงอยู่โดยการปิดหน้าต่างเชลล์เปิดขึ้นมาใหม่จากนั้น: node --version


11
นี่เป็นงานของ nvm ใช่ไหม หลังจาก$ nvm alias default 0.11.13และฉันได้รับ$ nvm use 0.11.12 node --version = 0.11.12ยังคงอยู่ในเซสชันใหม่โหนดหายไปอีกครั้ง ในเดเบียนฉันไม่มีปัญหานี้เลย
frhd

4
เอาล่ะ Ive nvm alias defaul Xมีการพิมพ์ผิด: ด้วยการใช้งานที่เหมาะสมมันใช้งานได้จริง ดังนั้นเวิร์กโฟลว์น่าจะเป็นเช่นnvm install Xนั้นnvm alias default Xฉันเดา ขอบคุณที่ช่วย!
frhd

21
ฉันมีปัญหาเดียวกันและมันเป็นเพราะผมได้รับการส่งออกหลังNVM_DIR nvm.shตรวจสอบให้แน่ใจว่าได้ส่งออกNVM_DIRมาก่อน
maxwell2022

11
โปรดทราบnvm alias defaultว่าไม่ได้ตั้งค่ารุ่นโหนดสำหรับสภาพแวดล้อมปัจจุบันเพียงสำหรับใหม่ทั้งหมด
ericsoco

28
หากไม่ได้ทำงานให้ตรวจสอบในของคุณ.bash_profile(หรือ.bashrcหรืออะไรก็ตาม) คุณไม่ได้มีการปรับเปลี่ยนอะไรPATHหลังจากsource xx/nvm.sh
goodmanship

85

นามแฝงกับnodeตัวเองเพื่อหลีกเลี่ยงการอัพเดตนามแฝงดีฟอลต์พร้อมกับการอัพเดตเวอร์ชันโหนดในภายหลัง

nvm alias default node

2
! คำเตือน: เวอร์ชัน 'node' ไม่มีอยู่ เริ่มต้น -> โหนด (-> N / A)?
บ้าน 3272

6
เกี่ยวกับnode alias default stableอะไร
ปิแอร์เฮนรี

1
ฉันไม่คิดว่าคุณต้องการใช้stableอีกต่อไป จาก nvm docs: "เสถียร: นามแฝงนี้เลิกใช้แล้วและใช้ได้เฉพาะกับโหนด v0.12 และก่อนหน้านี้เท่านั้นปัจจุบันนี้เป็นนามแฝงสำหรับโหนด"
pherris

1
ที่nodeจะเริ่มต้นนี้หรือไม่? Node ติดตั้งและใช้งานโดย NVM ในเชลล์ปัจจุบันหรือ Node อาจติดตั้งบนระบบโดยแพ็คเกจการติดตั้งของ Node หรือ Homebrew เป็นต้น
2540625

7
(nvm ผู้ดูแลที่นี่) node(และstableแต่ทุกอย่างในการปล่อยใน semver มีเสถียรภาพดังนั้นตอนนี้เป็นคำที่ไร้ประโยชน์) ใช้รุ่นล่าสุดที่มี สำหรับคำสั่งโลคัลติดตั้งล่าสุด สำหรับคำสั่งรีโมตพร้อมใช้งานล่าสุด
LJHarb

40

ในการติดตั้งเวอร์ชันเสถียรล่าสุด:

nvm install stable

หากต้องการตั้งค่าเริ่มต้นให้เป็นรุ่นที่เสถียร (แทนรุ่นที่ระบุ):

nvm alias default stable

ในการแสดงรายการเวอร์ชันที่ติดตั้ง:

nvm list

ณ วันที่v6.2.0มันจะมีลักษณะเช่น:

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)

สิ่งนี้ใช้งานได้ดีและคำแนะนำในการใช้nvm listช่วยให้ผู้ใช้เห็นภาพว่าเกิดอะไรขึ้นกับเวอร์ชันของพวกเขา ขอบคุณ!
Solvitieg

30

ในกรณีของฉันมีโปรแกรมอื่นเพิ่มPATHการเปลี่ยนแปลง.bashrc

หากโปรแกรมอื่น ๆ ที่มีการเปลี่ยนแปลงPATH หลังจาก initialisation NVM แล้ว NVM ของPATHการเปลี่ยนแปลงที่จะลืมและเราจะได้รับโหนดระบบของเราPATH(หรือไม่มีโหนด)

ทางออกคือการย้ายการตั้งค่า nvm ไปที่ด้านล่างของ.bashrc

### BAD .bashrc ###

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

สารละลาย:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

(นี่คือการทุบตี 4.2.46 ใน CentOS ดูเหมือนว่าฉันชอบข้อผิดพลาดในทุบตี แต่ฉันอาจจะเข้าใจผิด)


1
สิ่งนี้ช่วยฉัน! ค่าเริ่มต้นติดอยู่
Redsandro

1
ให้เหรียญนี้กับผู้ชายคนนี้! ฉันโหลดไฟล์ rc เพิ่มเติมใน zshrc ของฉันหลังจากที่ NVM_DIR ทำการส่งออกมันทำให้ฉันบ้า ขอบคุณ!
bobbytables

ขอบคุณ! สิ่งนี้ทำให้ฉันเป็นบ้า
ต้นไม้

27

nvm ทำงานโดยการเปลี่ยนตัวแปร PATH ดังนั้นคุณต้องแน่ใจว่าคุณไม่ได้เปลี่ยน PATH เป็นอย่างอื่นหลังจากหาสคริปต์ nvm.sh

ในกรณีของฉัน nvm.sh ถูกเรียกใน. bashrc แต่จากนั้นตัวแปร PATH ได้รับการอัพเดทใน. bash_profile ซึ่งทำให้เซสชันของฉันค้นหาโหนดระบบก่อนโหนด nvm


1
ฉันจะตรวจสอบสิ่งนี้ได้อย่างไร ฉันสงสัยว่าเป็นกรณีนี้
Mild Fuzz

นี่คือกรณีของฉันขอบคุณ! ฉันกำลังตั้งค่าการส่งออกด้านบนไฟล์. zshrc ของฉันเพียงแค่ย้ายมันไปที่ด้านล่างและแก้ไขปัญหาได้แล้ว
Alejandro Silva

นั่นคือกรณีของฉัน วิธีแก้ไขคือการย้ายรายการ NVM ~ / .bash_profile ไปที่ท้ายไฟล์ + ชุดnvm alias defaultและnvm useไปยังเวอร์ชัน i ที่ต้องการ
Eugene Tartakovsky

นี่คือทางออกสำหรับฉัน ย้ายรายการต่อไปนี้ไปที่ด้านล่างของ.bashrc: export NVM_DIR="$HOME/.nvm"จากนั้น. "/usr/local/opt/nvm/nvm.sh"
asmiller

10

โซลูชันที่ได้คะแนนสูงสุดดูเหมือนจะไม่เหมาะกับฉัน ทางออกของฉันอยู่ด้านล่าง:

  1. ถอนการติดตั้ง nvm โดยใช้ homebrew:brew uninstall nvm
  2. ติดตั้งใหม่ brew install nvm
  3. ในเทอร์มินัลให้ทำตามขั้นตอนด้านล่าง (สิ่งเหล่านี้จะปรากฏในรายการเมื่อติดตั้ง nvm ผ่าน homebrew):

    mkdir ~ / .nvm cp $ (ชง - คำนำหน้า nvm) / nvm-exec ~ / .nvm / ส่งออก NVM_DIR = แหล่งที่มา ~ ~ .nvm $ (ชง - คำนำหน้า nvm) /nvm.sh

ขั้นตอนที่ระบุไว้ข้างต้นจะเพิ่มไดเรกทอรีการทำงานของ NVM ไปยังเส้นทาง $ HOME ของคุณคัดลอก nvm-exec ไปยังไดเรกทอรีการทำงานของ NVM และเพิ่มไปยัง $ HOME / .bashrc, $ HOME / .zshrc หรือไฟล์การกำหนดค่าที่เทียบเท่ากับเชลล์ของคุณ แสดงรายการในการติดตั้ง NVM โดยใช้ homebrew)


7

หากคุณลองทุกอย่างแล้วก็ยังไม่มีโชค

1 -> ถอนการติดตั้ง NVM

rm -rf ~/.nvm

2 -> ลบการพึ่งพา npm โดยทำตามสิ่งนี้

3 -> ติดตั้ง NVM

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

4 -> ~/.bash_profileกำหนดค่า

วิ่ง sudo nano ~/.bash_profile

คัดลอกและวางติดตามสิ่งนี้

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

5 -> CONTROL + Xบันทึกการเปลี่ยนแปลง

6 -> เรียกใช้ . ~/.bash_profile

7 -> ตอนนี้คุณควรnvmติดตั้งบนเครื่องของคุณเพื่อติดตั้งโหนดการทำงานnvm install v7.8.0นี้จะเป็นเวอร์ชั่นเริ่มต้นของโหนดหรือคุณสามารถติดตั้งเวอร์ชั่นของโหนดใดก็ได้


1
ขอบคุณมาก! นี่เป็นทางออกเดียวที่กำหนดเส้นทางโหนดในทุบตีและทำงานให้ฉัน ฉันเพิ่งใช้ "nvm install node" เพื่อติดตั้งโหนดรุ่นล่าสุดแทนที่จะใช้ "nvm install v7.8.0"
user3492435

5

คำถามนี้ได้กล่าวถึงสำหรับ OSX แต่มันเกิดขึ้นกับฉันในระบบปฏิบัติการลินุกซ์ของฉัน ฉันพยายามใช้nvm alias default <version>แต่สำหรับเทอร์มินัลเซสชันใหม่แต่ละครั้งรุ่นโหนดที่ใช้ถูกลืม ดังนั้นนี่คือทางออกที่ฉันคิดออก

ให้แน่ใจว่าจะตั้งชื่อแทนค่าเริ่มต้นสำหรับรุ่นโหนดใส่รหัสต่อไปนี้ใน .bashrc source .bashrcและ

export NVM_DIR="/home/bonnie/.nvm"
## If the file exists and is not empty
if [ -s "$NVM_DIR/nvm.sh" ]; then
    ## Source it
    source "$NVM_DIR/nvm.sh"
fi
NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH

ลิงค์โซลูชันอธิบาย


1
เพียงแค่ทราบสิ่งนี้ขึ้นอยู่กับการรวมvในรุ่นเมื่อตั้งค่าระยะไกล เช่นแทนv4.2.4 4.2.4
vaughan

4

nvm install 10.14ตัวอย่างเช่นการทำnvm useเวอร์ชันนั้นสำหรับเซสชันเชลล์ปัจจุบัน แต่จะไม่ตั้งค่าเสมอเป็นค่าเริ่มต้นสำหรับเซสชันในอนาคตตามที่คุณคาดหวัง nvm alias defaultรุ่นโหนดคุณได้รับในเซสชั่นเปลือกใหม่จะถูกกำหนดโดย พลุกพล่านnvm installจะตั้งค่านามแฝงเริ่มต้นหากยังไม่ได้ตั้งค่า หากต้องการรับพฤติกรรมที่คาดหวังให้ทำดังนี้

nvm alias default ''; nvm install 10.14

สิ่งนี้จะช่วยให้แน่ใจว่าจะดาวน์โหลดเวอร์ชันนั้นใช้สำหรับเซสชันปัจจุบันและตั้งเป็นค่าเริ่มต้นสำหรับเซสชันในอนาคต


3

รันสิ่งนี้หลังจากที่คุณติดตั้งเวอร์ชันใด ๆ

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

คำสั่งนี้กำลังคัดลอกเวอร์ชันใด ๆ ของโหนดที่คุณใช้งานผ่าน nvm ไปยังไดเร็กทอรี / usr / local / และตั้งค่าการอนุญาตเพื่อให้ผู้ใช้ทุกคนสามารถเข้าถึงได้


ฉันอยากจะแนะนำให้ใช้&&s แทน;คำสั่งนั้น หากwhichล้มเหลวในการค้นหาโหนดเราไม่ต้องการดำเนินการกับ chmod /bin/*!
joeytwiddle


2

ฉันใช้ ZSH ดังนั้นฉันต้องแก้ไข~/.zshrcด้วยบรรทัดที่เกี่ยวข้องกับ NVM ตามลำดับ:

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh

1
$ nvm alias default {NODE_VERSION}

เมื่อเราใช้คำสั่งข้างต้นเพียงอัปเดตเวอร์ชันโหนด แต่npmยังคงใช้เวอร์ชันเก่า

นี่เป็นอีกวิธีในการอัพเดททั้งสองnodeและnpmในกรณีของฉันฉันต้องการใช้โหนด8.9.4และฉันได้ใช้คำสั่งด้านล่าง

$ nvm use default 8.9.4

และคำสั่งส่งคืนผลลัพธ์

ตอนนี้ใช้โหนด v8.9.4 (npm v5.6.0)


0

หากคุณมี SDKMAN ...

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

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/myname/.sdkman"
[[ -s "/Users/myname/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/myname/.sdkman/bin/sdkman-init.sh"

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

0

ฉันกำลังเผชิญปัญหาเดียวกันในขณะที่ใช้เทอร์มินัลรวมในตัวแก้ไขรหัส VS การรีสตาร์ท VS Code หลังจากเปลี่ยนเวอร์ชันโหนดโดยใช้ nvm แก้ไขปัญหาให้ฉัน


0

นี่คือคำแนะนำง่ายๆ:

1) ติดตั้ง:

nvm install 8.10.0

2) ใช้หนึ่งครั้งต่อเทอร์มินัล

nvm use 8.10.0

3) ตั้งค่าเป็นค่าเริ่มต้นสำหรับเทอร์มินัลทั้งหมด

nvm alias default 8.10.0

คุณอาจต้องใช้การอนุญาตรูทเพื่อดำเนินการเหล่านั้น

และอย่าลืมตรวจสอบเอกสาร nvmสำหรับข้อมูลเพิ่มเติม

โปรดทราบว่าคุณอาจต้องระบุเวอร์ชันโหนดสำหรับ IDE ของคุณ: ป้อนคำอธิบายรูปภาพที่นี่


-2

นอกจากนี้ในกรณีที่คุณติดตั้งโหนดก่อนที่จะตรวจสอบnvmใน~ / .bash_profileของคุณเพื่อไม่ให้มีลักษณะดังนี้:

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

หากคุณมีความคิดเห็น / ลบมันและnvmควรเริ่มจัดการรุ่นโหนดเริ่มต้น


การตั้งค่าตัวแปรพา ธ ไม่มีส่วนเกี่ยวข้องกับการเลือกเวอร์ชัน nvm ใช่ไหม?
sn0r

nvm.sh ควรแก้ไข PATH ของคุณหลังจากที่คุณตั้งค่า (เช่นกับด้านบน) สิ่งนี้ยอมให้ nvm วางไดเร็กทอรี version ไว้ก่อน / usr / local / bin โดยที่เวอร์ชัน "system" ของโหนดใช้งาน
เดนิสฮาว

-3

หลังจากใช้เวลานานในการขัดแย้งกับปัญหานี้ฉันพบวิธีแก้ไข นี่เป็นวิธีแก้ปัญหาแบบทีละขั้นตอนสำหรับปัญหา:

  • เปิดเทอร์มินัล & ติดตั้งเครื่องมือสำหรับผู้พัฒนาบรรทัดคำสั่ง:

    xcode-select --install

  • กดปุ่มตกลง

  • ติดตั้ง NVM เวอร์ชั่นล่าสุด:

    cd ~/

  • กดปุ่มตกลง

    git clone https://github.com/creationix/nvm.git .nvm

  • กดปุ่มตกลง
  • ในกรณีที่คุณสร้างโฟลเดอร์. nvm มาก่อนคุณจะเห็นข้อความแสดงข้อผิดพลาดถัดไป:

    fatal: destination path '.nvm' already exists and is not an empty directory.

    มิฉะนั้นคุณจะเห็นกระบวนการโคลนทำงานจนกว่าจะเสร็จสิ้น

  • ตรวจสอบเวอร์ชั่น NVM ล่าสุด:

    cd ~/.nvm

  • กดปุ่มตกลง

    git checkout v0.34.0

    คุณจะได้รับคำตอบคล้ายกับ:

    HEAD is now at 3d9c31d v0.34.0

    เวอร์ชันอาจแตกต่างกันในระบบที่แตกต่างกัน

    ls

  • กดปุ่มตกลง

    . nvm.sh

  • กดปุ่มตกลง

    nvm list

  • กดปุ่มตกลง

    คุณจะเห็นเวอร์ชันโหนดต่าง ๆ ที่ติดตั้งบนเครื่องของคุณอาจมีข้อผิดพลาดบางอย่างอย่าให้ความสนใจ

    nvm ls-remote | tail -n9

  • กดปุ่มตกลง

    nvm list

  • เปิดทุบตีโดยใช้กลุ่ม:

    vim ~/.bash_profile

  • ภายในเครื่องมือแก้ไขเสียงเรียกเข้ากด: iเพื่อเข้าINSERT modeและเริ่มขึ้นบรรทัดใหม่ หากคุณมีข้อผิดพลาดใด ๆ เมื่อแก้ไขกดESCปุ่มและ:q!เพื่อออกโดยไม่บันทึก

    export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

  • กดESCปุ่มเมื่อคุณแก้ไขไฟล์เสร็จ (คุณจะเห็นโหมด INSERT หายไป)

  • กด:wqเพื่อบันทึกไฟล์
  • กดปุ่มตกลง

    nvm ls-remote | tail -n9

  • กด Enter และติดตั้งเวอร์ชัน nvm ใหม่ล่าสุดที่นำเสนอ:

    nvm install 12.6.0

  • เมื่อกระบวนการเสร็จสิ้นคุณจะเห็น: Now using node v12.6.0 (npm v6.9.0)

  • คุณสามารถตรวจสอบว่าการติดตั้งสำเร็จหรือไม่โดยกด:

    node -vหรือnpm -vควรแสดงเวอร์ชันทั้ง nvm และ npm ที่ติดตั้งบนระบบของคุณ

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