ฉันจะเปลี่ยนรุ่น npm โดยใช้ nvm ได้อย่างไร


240

ฉันใช้ NVM เพื่อติดตั้ง nodeJS เวอร์ชันล่าสุดสำหรับโหนดของฉัน มันทำงานได้ดีโดยสิ้นเชิงสำหรับการติดตั้งเวอร์ชันแยกต่างหากและสลับระหว่างกัน นอกจากนี้ยังติดตั้ง NPM เวอร์ชันล่าสุดภายในแต่ละโฟลเดอร์ ... / bin พร้อมกับโหนดไบนารี อย่างไรก็ตามดูเหมือนจะไม่มีวิธีใดที่จะเปลี่ยนเวอร์ชันของ NPM ที่ฉันใช้อยู่ (หรืออย่างน้อยฉันก็ไม่สามารถเข้าใจได้)

ทางออกเดียวที่ฉันนึกได้คือลบไบนารีที่มันเป็นค่าตั้งต้น (ซึ่งเป็น NPM ที่ติดตั้งเมื่อฉันติดตั้งโหนดครั้งแรกด้วย NVM) และแทนที่ที่จะใส่ไบนารี NPM ล่าสุด อย่างไรก็ตามฉันสงสัยว่ามีวิธีที่ดีกว่าในการทำสิ่งนี้หรือไม่


1
ทำไมคุณถึงต้องการเปลี่ยนรุ่นของ NPM ไม่ใช่ว่าคุณจะติดตั้งแพคเกจใด ๆ ที่ใช้งานได้กับ NPM เวอร์ชันเก่าเท่านั้น และหลังจากโหนด 0.6 โหนดจะมาพร้อมกับ NPM ล่าสุด ดังนั้นการเปลี่ยนเวอร์ชั่นโหนดจะเปลี่ยนเวอร์ชัน npm ด้วย
Farid Nouri Neshat

1
ยกเว้นว่าจะไม่ผ่านทาง NVM ใช่ - โหนดมาพร้อมกับ NPM แต่นั่นก็หมายความว่ามันติดตั้งไบนารีข้างมัน ฉันสามารถดูไบนารีทั้งสองในโฟลเดอร์ที่เกี่ยวข้องได้ แต่เมื่อฉันเรียกใช้ "nvm ใช้ v0.6.13" ไบนารี npm ที่ใช้อยู่จะยังคงเป็นไบนารีที่ติดตั้งด้วยโหนดเวอร์ชันที่เก่ากว่าแทนที่จะเป็นรุ่นที่ติดตั้งล่าสุด
thisissami

1
นี่คือรหัสสำหรับ npm: github.com/creationix/nvm/blob/master/nvm.sh#L135-148ซึ่งไม่จำเป็นต้องใช้ตั้งแต่ 0.6 ดังนั้นบางทีคุณควรลองลบส่วนนั้นออก ที่ควรช่วย นอกจากนี้คุณยังสามารถสร้างปัญหาใน GitHub
Farid Nouri Neshat

ฉันกำลังแก้ไขปัญหานี้ในตอนนี้ความช่วยเหลือใด ๆ ที่ได้รับการชื่นชม - stackoverflow.com/questions/50976138/ …
Alexander Mills

คำตอบ:


330

แก้ไข: หลายปีตั้งแต่คำถามนี้ถูกตอบครั้งแรกตามที่ระบุไว้ในคำตอบที่ใหม่กว่าตอนนี้มีคำสั่งสำหรับสิ่งนี้:

ตอนนี้ nvm มีคำสั่งให้อัพเดต npm มันหรือnvm install-latest-npmnvm install --latest-npm

nvm install-latest-npm: พยายามอัพเกรดเป็นnpmเวอร์ชั่นล่าสุดที่ทำงานกับเวอร์ชั่นโหนดปัจจุบัน

nvm install --latest-npm: หลังการติดตั้งพยายามอัพเกรดเป็น npm ที่ทำงานล่าสุดบนโหนดเวอร์ชันที่ระบุ

ด้านล่างนี้เป็นคำตอบที่ถูกต้องสำหรับคำถามนี้

กว่าสามปีหลังจากคำถามนี้ถูกถามครั้งแรกดูเหมือนว่าคำตอบจะง่ายกว่านี้มาก เพียงแค่การปรับปรุงรุ่นที่ติดตั้ง NVM ~/.nvm/versions/node/[your-version]/lib/node_modules/npmซึ่งอาศัยอยู่ใน

ฉันเพิ่งติดตั้งโหนด 4.2.2 ซึ่งมาพร้อมกับ npm 2.14.7 แต่ฉันต้องการใช้ npm 3 ดังนั้นฉันจึงได้:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm

ง่าย!

และใช่สิ่งนี้ควรใช้ได้กับโมดูลใด ๆ ไม่ใช่แค่ npm ซึ่งคุณต้องการเป็น "global" สำหรับโหนดรุ่นที่ระบุ


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


ขอบคุณ @philraj ที่ชี้เรื่องนี้ในความคิดเห็น


13
และสำหรับผู้ที่ไม่ทราบว่า NVM which npmของพวกเขาคือเหมือนผมวิ่ง
Larry

16
และถ้าคุณต้องการเวอร์ชันของ npm นอกเหนือจากรุ่นล่าสุดให้รัน npm install npm@major.minor.patchรุ่นที่ระบุเช่นnpm@3.10.9
Michael

2
สิ่งที่คล้ายกันทำงานสำหรับnvm-windowsเช่นcd ~/AppData/Roaming/nvm/v5.10.1กัน
absynce

2
สำหรับทุกคนที่ใช้ nvm สำหรับ Windows สามารถทำได้เหมือนกันด้านบน (ใช้ npm install npm) แต่ในตำแหน่งการติดตั้งโหนดสำหรับ Windows ใน Windows 10 นี่คือ ~ / AppData / Roaming / nvm / [รุ่นที่คุณใช้] เช่น Users \ myusername \ AppData \ Roaming \ nvm \ v9.7.1
Sean Holmesby

3
ง่ายยิ่งขึ้น: nvm install-latest-npmตามที่ได้รับคำตอบด้านล่างโดย samlandfried - stackoverflow.com/a/47519162/5991278
philraj

43

nvm ไม่ได้จัดการ npm

ดังนั้นหากคุณต้องการติดตั้งโหนด 0.4.x (ซึ่งแพ็คเกจจำนวนมากยังคงขึ้นอยู่กับ) และใช้ NPM คุณยังสามารถใช้ npm 1.0.x

ติดตั้งโหนด 0.6.x (ซึ่งมาพร้อมกับ npm 1.1.x) และติดตั้ง nvm ด้วย npm:

npm install nvm
. ~/nvm/nvm.sh

ติดตั้งโหนด 0.4.x ด้วย nvm:

nvm install v0.4.12
nvm use v0.4.12

ติดตั้ง npm โดยใช้ install.sh (สังเกต-Lพารามิเตอร์เพื่อติดตามการเปลี่ยนเส้นทาง):

curl -L https://npmjs.org/install.sh | sh

สิ่งนี้จะตรวจจับโหนด 0.4.12 และติดตั้ง npm 1.0.106 ในโฟลเดอร์ ~ / nvm / v0.4.12 / lib / node_modules ของคุณและสร้าง symlink สำหรับ nvm

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

หากคุณพยายามเรียกใช้ npm จะยังคงให้ข้อผิดพลาด แต่ถ้าคุณทำnvm use v0.4.12อีกครั้งตอนนี้ควรจะทำงาน


3
ขอบคุณ! โปรดทราบว่า URL ได้เปลี่ยนเป็น: curl https://npmjs.org/install.sh | sh
tristen

7
นี่เป็นคำตอบที่เก่ามากตอนนี้หรือไม่? npm ของฉันถูกดาวน์โหลดโดย nvm โดยอัตโนมัติเป็นการอ้างอิงรุ่นโหนดที่ฉันใช้
Damon Smith

2
ใช่. มันเก่า. หากคุณยังคงใช้โหนด 0.4 และ nvm เก่าคุณอาจเห็นปัญหานี้
fijiaaron

1
URL ได้รับการเปลี่ยนแปลงอีกครั้งเพื่อบังคับให้ www ใช้curl -Lเพื่อติดตามการเปลี่ยนเส้นทาง
Neal Ehardt

32

ตอนนี้ nvm มีคำสั่งให้อัพเดต npm มันหรือnvm install-latest-npmnpm install --latest-npm


3
คุณมีลิงค์ไปยังเอกสารประกอบสำหรับสิ่งนี้หรือไม่?
allicarn

1
จากnvm helpคอนโซลเอาต์พุต: --latest-npm After installing, attempt to upgrade to the latest working npm on the given node versionฉันไม่พบการอ้างอิงถึงสิ่งนี้ในnvmเอกสารแม้ว่า กรุณาแบ่งปันหากคุณพบมัน
samlandfried

ขอบคุณ! ควรทำเครื่องหมายว่านี่เป็นคำตอบที่ถูกต้องจริงๆ
philraj

ใช้ได้เฉพาะใน 32 บิต
Negin

30
npm install npm@x.x.x -g
npm install npm@5.4.0 -g

2
แม้ว่าคำถามจะเกี่ยวกับ nvm แต่ฉันมาที่นี่เพื่อขอบคุณ Upvoting
Atrahasis

27

ฉันใช้ Windows และฉันไม่สามารถทำให้สิ่งนี้ทำงานได้ ฉันยังคงได้รับข้อผิดพลาดเกี่ยวกับไฟล์ที่อยู่ระหว่างทาง สิ่งนี้ใช้ได้ผล:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

cd %APPDATA%\nvm\v8.10.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

และบูมฉันกลับมาทำธุรกิจ


3
ขอบคุณสิ่งนี้ใช้ได้กับฉันเช่นกันบน Windows (มีปัญหาไฟล์ขัดแย้งกัน)
Venryx

1
ทำงานให้ฉันขอบคุณ กำลังใช้ nvm บน Windows เพื่อจัดการโหนดและต้องการยกระดับ nvm หลังจากเปลี่ยนเป็นเวอร์ชันโหนด ต้องเรียกใช้คอนโซลด้วยสิทธิ์ระดับสูง โฟลเดอร์ path nodejs ของฉันคือ "C: \ Program Files \ nodejs" ซึ่งเป็นนามแฝงสำหรับตำแหน่งอื่นบนเครื่อง nvm ของฉันใช้ในการดาวน์โหลดแคช (ไม่ใช่ APPDATA) เดาว่าฉันเลือกตำแหน่งอื่นเมื่อติดตั้ง nvm
Moika อายุ

2
ขอบคุณพวกเขาอาจต้องแก้ไขวิธีการอัปเดต npm สำหรับทุกรุ่น nodejs เก่าบนหน้าต่าง nvm
rbinsztock

1
ที่ช่วยให้ฉันปรับปรุง npm ซึ่งมาพร้อมกับ Node 10.x ขอบคุณ!
andypotato

2
ทำงานในหน้าต่าง v10.15.3 nodejs มีการเปลี่ยนแปลงmvไปrenและrmไปdelและrmdirสำหรับฉัน
Deerchao

17

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

sudo npm install -g npm@X.X.X

ลบลิงก์ sym ใน / usr / local / bin /

sudo rm /usr/local/bin/npm

สร้างลิงก์ sym ใหม่โดยใช้เวอร์ชันที่ต้องการของ npm ที่คุณติดตั้ง

sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm

1
ทำตามคำแนะนำเหล่านี้พยายามที่จะไปจาก 2.14.7 ถึง 2.15.9 และตอนนี้เมื่อฉันพิมพ์ npm -v ฉันจะได้รับ 3.8.6 บ้า
Kyle Baker

3
หลังจากที่พยายามหลายสิ่งหลายอย่างสำหรับฉันเพียงแค่ใช้รับฉันรุ่นที่ตอบสนองจากsudo npm install -g npm@x.x.x npm -vอย่างน้อยก็ทำงานได้ตั้งแต่ 4.x ถึง 2.15.9 อย่างไรก็ตาม
Kyle Baker

1
ในกรณีของฉันsudo npm install -g npm@4.6.1ติดตั้งเพียง 4.6.1 แต่ยังคงใช้ npm 5.1.0 เคล็ดลับของคุณช่วยฉันเปลี่ยนเป็น 4.6.1
Hung Tran

8

โดยดูที่www.npmjs.com/install.shฉันพบว่ามีวิธีการติดตั้งรุ่นที่ระบุโดยการตั้งค่าตัวแปรสภาพแวดล้อม

export npm_install="2.14.14"

จากนั้นรันสคริปต์ดาวน์โหลดตามที่อธิบายไว้ที่npmjs.com :

curl -L https://www.npmjs.com/install.sh | sh

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


2
ฉันต้องใช้curl -L https://www.npmjs.com/install.sh | sudo shaaaa และวิธีนี้ใช้ไม่ได้ทำให้ฉันได้รับเวอร์ชันล่าสุดแม้ว่าฉันจะส่งออกตัวแปรสภาพแวดล้อมแล้วก็ตาม พระเจ้าประณาม ฉันต้องการรุ่น 2.15.9 จาก 2.14.7 คำตอบด้านล่างให้ฉันที่ 3.8.6 และตอนนี้คำตอบนี้ทำให้ฉันที่ 4.0.2 WTF
Kyle Baker

6

ใน windows รันเทอร์มินัลของคุณในฐานะผู้ดูแลระบบ (ในกรณีที่มีปัญหาสิทธิ์อนุญาตตามที่ฉันมี) จากนั้นใช้โหนดรุ่นที่ระบุ (บอก 7.8.0) โดย

nvm use 7.8.0

จากนั้นอัปเดต npm ของคุณเป็นเวอร์ชันที่ต้องการโดย

npm install -g npm@5.0.3

2

เกี่ยวกับnpm i -g npmอะไร คุณพยายามใช้งานสิ่งนี้ด้วยหรือไม่?


นี่เป็นวิธีที่เร็วและง่ายที่สุดที่ฉันใช้อยู่เสมอ
CTS_AE

2

การเปลี่ยนแปลงเล็กน้อยในคำแนะนำข้างต้นทำงานสำหรับฉัน (MacOS Sierra 10.12.6)

npm install -g npm@3.10.10
rm /usr/local/bin/npm
ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm
npm --version


0

ฉันมีปัญหาเดียวกันหลังจากติดตั้งnvm-windowsที่ด้านบนของการติดตั้งโหนดที่มีอยู่ โซลูชันเป็นเพียงการทำตามคำแนะนำ:

คุณควรลบตำแหน่งการติดตั้ง npm ที่มีอยู่ (เช่น "C: \ Users \ AppData \ Roaming \ npm") เพื่อให้ตำแหน่งการติดตั้ง nvm จะถูกใช้อย่างถูกต้องแทน

การติดตั้งและอัพเกรด


0

การติดตั้ง NVM และการใช้งานบน Windows

ด้านล่างนี้เป็นขั้นตอนสำหรับการติดตั้ง NVM บน Windows:

NVM ย่อมาจาก node version manager ซึ่งจะช่วยในการเปลี่ยนเวอร์ชั่นโหนดของคุณสำหรับการใช้งานเฉพาะ นอกจากนี้ยังช่วยให้ผู้ใช้สามารถทำงานกับหลาย npm และรุ่นโหนด

ติดตั้งการตั้งค่า nvm ใช้คำสั่ง "รายการ nvm" เพื่อตรวจสอบรายการรุ่นโหนดที่ติดตั้ง พิมพ์ "nvm ใช้หมายเลขรุ่น [6.9.3]" เพื่อสลับรุ่น สำหรับข้อมูลเพิ่มเติม

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