Nvm-windows: Mengapa tidak berfungsi untuk mengganti versi simpul melalui "penggunaan nvm"

Dibuat pada 11 Des 2017  ·  43Komentar  ·  Sumber: coreybutler/nvm-windows

Jika ini adalah pertanyaan tentang cara menggunakan NVM4W, silakan gunakan stackoverflow sebagai gantinya.

Jika ini adalah masalah tentang antivirus, pastikan Anda mencari masalah yang ada terlebih dahulu.

Lingkunganku

  • [x] Windows 7 atau lebih rendah (tidak benar-benar didukung karena EOL - lihat wiki untuk detailnya)

Saya menggunakan versi NVM4W:

  • [x] 1.1.6

Aku sudah...

  • [x] baca README untuk mengetahui masalah npm gotcha & antivirus.
  • [x] meninjau wiki untuk memastikan masalah saya belum teratasi.
  • [ ] diverifikasi Saya menggunakan akun dengan hak administratif.
  • [ ] mencari masalah (terbuka dan tertutup) untuk memastikan ini bukan duplikat.
  • [ ] memastikan ini bukan pertanyaan tentang cara menggunakan NVM untuk Windows, karena gitter digunakan untuk pertanyaan dan komentar.

Masalah saya terkait dengan (centang hanya yang berlaku):

  • [ ] pengaturan.txt
  • [ ] dukungan proxy (Sudahkah Anda mencoba versi 1.1.0+?)
  • [ ] Dukungan 32 atau 64 bit (Sudahkah Anda mencoba versi 1.1.3+?)
  • [ ] Karakter melarikan diri (Sudahkah Anda mencoba versi 1.1.6+?)
  • [ ] Lingkungan shell standar (terminal/powershell)
  • [ ] Lingkungan shell non-standar (Cmder, Hyper, Cygwin, git)

Perilaku yang Diharapkan

saya mencoba untuk beralih v8.9.1 ke 6.12.0 (versi node)

Perilaku Sebenarnya

tetapi, itu tidak beralih ke 6.12.0 atau versi lain.
(akhirnya saya menginstal 8.9.1)

Langkah-langkah untuk mereproduksi masalah:

saya membuka cmd melalui administrator.

C:Windowssystem32>nvm ls

  • 8.9.1 (Saat ini menggunakan executable 64-bit)
    7.1.0
    6.12.0

C:Windowssystem32>simpul -v
v8.9.1

C:Windowssystem32>nvm menggunakan 6.12.0
Sekarang menggunakan simpul v6.12.0 (64-bit)

C:Windowssystem32>simpul -v
v8.9.1

C:Windowssystem32>nvm ls

  • 8.9.1 (Saat ini menggunakan executable 64-bit)
    7.1.0
    6.12.0

Komentar yang paling membantu

Solusi:
Berganti nama "C:Program Filesnodejs" menjadi "C:Program Filesnodejsx",
Kemudian dari cmd yang ditinggikan yang disebut "nvm use 8.9.1" (versi apa pun yang Anda dapatkan harus berfungsi ..) dan itu mulai berfungsi.
Masalahnya tampaknya jika direktori nodejs ada, nvm tidak dapat mengubahnya menjadi symlink dan 'gagal secara diam-diam' akan menyenangkan dengan gagal dan pesan kesalahan yang menyatakan masalah.

Semua 43 komentar

sama

+1

Sama dengan nvm 1.1.5 :

C:\windows\system32>nvm version
1.1.5

C:\windows\system32>nvm ls

    8.9.2
  * 4.7.2 (Currently using 64-bit executable)

C:\windows\system32>nvm use 8.9.2
Now using node v8.9.2 (64-bit)

C:\windows\system32>node -v
v4.7.2

C:\windows\system32>

@biologeek hal yang sama :/
apakah Anda menemukan beberapa solusi?

Ini paling sering terjadi karena penggunaan akun pengguna yang tidak memiliki hak istimewa. Akun Anda harus memiliki izin tingkat administrator, karena Windows memerlukannya untuk symlink. nvm use membuat symlink ke instalasi Node yang sesuai. Jika symlink Anda ada dalam C:\Program Files , Anda memerlukan izin yang lebih tinggi (nvm4w akan mencoba melakukan ini untuk Anda secara otomatis).

Saya admin di pc saya. Meskipun saya dapat mengatasi masalah ini dengan mengganti nama folder secara manual sehingga symlink nvm menunjuk ke versi yang saya butuhkan.
Cepat dan kotor tetapi tidak perlu memiliki akses admin!

@biologeek - Anda masih memerlukan akses admin untuk mengganti nama direktori dalam C:\Program Files karena ini adalah direktori yang dilindungi di Windows (hal yang sama berlaku untuk C:\windows\system32 ). Secara pribadi, saya menyimpan symlink NVM4W saya di direktori pengguna saya jadi ini bukan masalah.

+1 pada masalah ini: Saya tidak dapat mengubah versi.

Solusi:
Berganti nama "C:Program Filesnodejs" menjadi "C:Program Filesnodejsx",
Kemudian dari cmd yang ditinggikan yang disebut "nvm use 8.9.1" (versi apa pun yang Anda dapatkan harus berfungsi ..) dan itu mulai berfungsi.
Masalahnya tampaknya jika direktori nodejs ada, nvm tidak dapat mengubahnya menjadi symlink dan 'gagal secara diam-diam' akan menyenangkan dengan gagal dan pesan kesalahan yang menyatakan masalah.

Bisa konfirmasi apa kata @ituasdu . Terima kasih!

@ituasdu memecahkan masalah saya,thx

Hai, masalah yang sama di sini.

NVM membuat symlink ke versi node yang diinstal.

Masalahnya adalah bahwa Windows 7 memerlukan tingkat hak admin untuk membuat symlink, dan itu tidak terjadi lagi di Windows 10.

Solusinya adalah dengan menggunakan junction (tautan 'keras') pada Windows 7 dengan parameter '/ J'. Persimpangan tidak memerlukan tingkat hak admin dan akun pengguna dengan hak istimewa rendah karena milik saya dapat menggunakannya. Contoh:

nvm install 8.11.2
mklink /D /J node C:\PATH_TO_NVM\nvm\v8.11.2

Pertanyaan: Bukankah lebih baik menggunakan junctions daripada symlinks ? Atau setidaknya tentukan opsi untuk nvm misalnya '--junctions' ?

Saya sedang berpikir untuk membuat permintaan tarik untuk ini karena memblokir perusahaan saya. Apakah akan membantu?

@nan0 membuat persimpangan di windows 7 tidak berfungsi ... itu masih tidak akan beralih versi.

C:\Program Files\nodejs berisi v6.9.4 (diinstal sebelum NVM4W diinstal).

C:\Users\[user]\AppData\Roaming\nvm berisi v6.9.4\ dan v8.11.3\

Saya menjalankan perintah yang Anda berikan di posting Anda:

Masalah 1:
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 ketika saya mencoba melakukannya untuk v6.9.4 dikatakan "Tidak dapat membuat file ketika file itu sudah ada."

Masalah 2:
Juga, menggunakan nvm use v8.11.3 lalu nvm list itu tidak menunjukkan bahwa itu benar-benar menggunakan versi simpul yang diinstal nvm.

Apakah ada hal lain yang bisa dilakukan?
Bagaimana saya bisa melihat persimpangan yang dibuat? Di mana mereka sebenarnya ada?

Saya menggunakan:
Windows 7. tidak ada hak admin yang diizinkan untuk pengguna saya.

tidak peduli itu berhasil. Saya menyadari bahwa saya membuat junction di folder yang salah.

mengganti nama C:Program Filesnodejs menjadi C:Program Files nodejsx
dan kemudian membuat persimpangan sebagai "nodejs" dan mengarahkannya ke C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 berhasil!

Jadi untuk meringkas solusinya adalah ini:

tanpa node yang berdiri sendiri terpasang.

Di folder C:\Program Files\ gunakan cmd untuk menjalankan mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3

Bagi yang berminat berkontribusi, terima kasih!

Namun; Saya ingin menunjukkan bahwa persimpangan secara eksplisit dihindari karena mereka tidak akan bekerja di hard drive yang berbeda. Ini adalah titik sakit tertentu di jaringan perusahaan dengan drive bersama/drive yang dipetakan.

@ituasdu Ini memecahkan masalah saya,
Terima kasih atas solusinya.

Komputer saya adalah Windows 7, dan saya memiliki hak administrator. Dalam situasi yang sama, NVM tidak dapat mengubah versi. Pendekatan saya adalah menyiapkan NVM_SYMLINK D:Project NVM v8.11.4 dalam variabel lingkungan. Beralih versi node hanya memerlukan mengubah nomor versi yang sesuai dengan jalur NVM variabel lingkungan, seperti: NVM_SYMLINK D:Project NVM v6.9.0.Dengan cara ini, meskipun masalah telah terpecahkan, setiap kali saya mengubah versi, itu merepotkan, dan saya tidak menemukan solusi yang lebih baik untuk saat ini.

Solusi "Sagan" dari stack overflow berfungsi untuk saya:
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

Untuk saya,

nvm list 

image

Kemudian saya menghapus folder v8.9.4 dari nvm.
image

Setelah itu:

nvm list 

image

Kemudian, saya memindahkan v8.9.4 kembali.

Ini terjadi pada saya di Windows 10 10.0.17134.165
Saya mencoba solusi yang disebutkan oleh @ituasdu dan berhasil. Terima kasih!!!

Jika Anda menemukannya setelah Anda mencoba cmd seperti:
nvm use 6.10.0
dan versi nodejs belum diubah, Anda dapat memulai cmd.exe atau PowerShell oleh administrator.
image

Saya memiliki masalah yang sama ketika beralih antara node 6.6.0 dan 7.9.0 (Windows 10) tetapi solusi ituasdu tidak berfungsi. Menginstal ulang nvm juga tidak berhasil.

Saya menjalankan nvm install terbaru (diinstal 11.3.0) dan ini entah bagaimana memperbaikinya untuk saya.

Solusi:
Berganti nama "C:Program Filesnodejs" menjadi "C:Program Filesnodejsx",
Kemudian dari cmd yang ditinggikan yang disebut "nvm use 8.9.1" (versi apa pun yang Anda dapatkan harus berfungsi ..) dan itu mulai berfungsi.
Masalahnya tampaknya jika direktori nodejs ada, nvm tidak dapat mengubahnya menjadi symlink dan 'gagal secara diam-diam' akan menyenangkan dengan gagal dan pesan kesalahan yang menyatakan masalah.

Ini berhasil untuk saya.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

@ituasdu bekerja untuk saya juga.. terima kasih.. :)

@ituasdu Terima kasih, bekerja seperti pesona. Saya percaya ini terjadi ketika orang menginstal NodeJS sebelumnya secara langsung tanpa nvm dan kemudian mencoba menggunakan node melalui nvm.

Ini juga bekerja untuk saya, terima kasih.

Saya tidak tahu apakah ini bisa menjelaskan masalah ini, tetapi dalam kasus saya, saya pikir ini terjadi setelah menginstal versi baru dari node tanpa nvm (secara manual). Tampaknya tindakan ini membuat nvm gila.

@coreybutler ada pemikiran tentang menginstal symlink pada folder yang tidak memerlukan admin privs? Saya tahu ini mungkin sedikit, bentuk yang buruk di Windows dev, tetapi itu pasti akan mengesampingkan semua masalah ini, terutama di lingkungan perusahaan yang sangat terkunci, di mana mendapatkan privs admin adalah masalah besar.

Rasa sakit lain adalah apa yang saya derita saat ini (bukan karena nvmw) di mana, meskipun saya memang memiliki admin privs dalam beberapa kasus, setiap kali saya ingin beralih di antara versi node, saya harus membuka jendela cmd lainnya, jalankan cmd sebagai admin dan akhirnya jalankan nvm use 10.15.1 (misalnya). lalu nav kembali ke dev saya, jendela cmd. argh. lagi, sakit karena env kerja bukan karena nvmw. (nvmw luar biasa btw).

hanya pemikiran saja. ;-)

Jalankan nvm use <node.js version you want to use> (misalnya nvm use 10.15.3 ) di bawah Powershell ISE saat Administrator menyelesaikan masalah di Windows 10 saya.

Saya harus menjalankan nvm use any.version beberapa kali di bawah Powershell As Administrator untuk membuatnya berfungsi. Ini secara acak mengubah versi pada upaya pertama, kedua atau ketiga (nvm versi 1.1.7).

Saya mencoba memperbaikinya dengan menginstal Link Shell Extension dan melakukan langkah-langkah berikut:

  1. klik kanan pada C:\Program Files\nodejs
  2. pilih _Pilih Sumber Tautan_
  3. klik kanan pada C:\Program Files
  4. pilih _Lepas sebagai..._ > _Symbolic Link_
  5. ganti nama nodejs - SymbolicLink menjadi nodejsx

Namun sayangnya masalah masih saja terjadi.

Dapat mengonfirmasi solusi @ituasdu bekerja untuk saya juga.

@ituasdu bekerja untuk saya, terima kasih.

@monico-moreno - lain kali ping saya melalui email ketika saya tidak menjawab selama berbulan-bulan :) Untuk menjawab pertanyaan Anda, Anda dapat menginstal ke folder apa pun yang Anda inginkan menggunakan penginstal. Namun; semua symlink di Windows memerlukan hak istimewa admin, kecuali untuk beberapa mode pengembang pada edisi Windows 10 yang lebih baru. Intinya adalah hak istimewa admin ikut bermain di beberapa titik.

Juga, mungkin Anda dapat menguji sistem menu beta ketika saya membungkusnya (beralih versi dari bilah tugas Windows). Apakah itu akan menjadi alur kerja yang lebih baik?

  • Buka panel kontrol dan hapus instalan nvm dan node.js.
  • instal nvm-setup.zip dari https://github.com/coreybutler/nvm-windows/releases
  • buka prompt perintah. Masukkan nvm install @version. kemudian nvm gunakan versi.
  • pasang benang. kemudian di command prompt jalankan yarn install atau yarn.
  • periksa versi simpul dengan simpul -v.

Saya baru saja mengalami masalah serupa, tetapi alasan yang berbeda.

D:\> node -v
v12.14.0
D:\> nvm use 8.9.4
Now using node v8.9.4 (64-bit)
D:\> node -v
v12.14.0

// problem
D:\> where node
D:\soft\nodejs\node.exe // <- old nvm used this one
C:\Program Files\nodejs\node.exe // <- new nvm was changing this one

IIRC Saya telah menginstal versi nvm sebelumnya ke D:soft dan itu mengubah tautan D:softnodejs. Pada titik tertentu nvm lama berhenti berfungsi, karena repositori npm mengubah lokasi (jika berfungsi - tolong jangan sentuh). Saya harus menginstal nvm baru, dan saya kira nvm baru menolak untuk mengubah tautan lama, alih-alih memperbarui tautan C: Program Filesnodejs. Jadi saya menghapus D:softnodejs dan itu diperbaiki.

Terima kasih kepada @delepster yang menyarankan untuk menghapus simpul lama, yang membantu saya menemukan masalahnya

kami menginstal di tiga komputer hari ini, dua di antaranya sistem operasi windows 10 diinstal dan satu dengan server windows. Kedua mesin dengan OS windows 10 kehilangan pencarian mereka pada fitur startup tetapi tidak dengan OS Windows Server. jadi, Anda tidak dapat mengetikkan nama program yang Anda inginkan dan lihat lagi.

Adakah orang lain yang memiliki masalah yang sama?

@putko ini adalah masalah windows yang muncul hari ini, dikonfirmasi dan diperbaiki oleh MS. lihat tweet ini https://twitter.com/tomwarren/status/1225110095010418689

Solusi:
Berganti nama "C:Program Filesnodejs" menjadi "C:Program Filesnodejsx",
Kemudian dari cmd yang ditinggikan yang disebut "nvm use 8.9.1" (versi apa pun yang Anda dapatkan harus berfungsi ..) dan itu mulai berfungsi.
Masalahnya tampaknya jika direktori nodejs ada, nvm tidak dapat mengubahnya menjadi symlink dan 'gagal secara diam-diam' akan menyenangkan dengan gagal dan pesan kesalahan yang menyatakan masalah.

Ini berhasil untuk saya.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

Ini bekerja untuk saya juga.

Punya masalah serupa dengan 1.1.7 , akhirnya mengetahui bahwa file settings.txt diabaikan. nvm use sama sekali tidak melakukan apa-apa, sampai saya mengatur NVM_SYMLINK secara manual. Juga, tanpa SYMLINK disetel, nvm akan mencoba menghapus . , yang menarik, untuk sedikitnya.

Parameter path dalam settings.txt , yang berisi apa yang harus digunakan secara default sebagai SymLink, tidak pernah dibaca atau digunakan untuk menginisialisasi:
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

Versi terbaru Windows 10 Pro tempat saya melakukan instalasi baru, saya mengalami masalah yang sama.

Langkah-langkah saya yang biasa untuk menyiapkan mesin saya adalah:

  1. Instal dependensi utama (NodeJS dan Docker)
  2. Instal IDE (Visual Studio 2019 saat ini dengan .NET, NodeJS, dan deps pengembangan Python)
  3. Instal dependensi tambahan seperti Terminal Windows, font PL, nvm, tmux, WSL2, dll...

@ituasdu benar dalam pernyataannya, ketika saya mengganti nama file nodejs saya, itu memungkinkan saya untuk menggunakan nvm use dan benar-benar mengaturnya. Kalau tidak, itu akan berhasil secara salah dan memberi tahu saya set versi dan sebagainya tetapi itu tidak mengatur versi dan saya terjebak dengan LTS yang diinstal pada awalnya.

Saya tahu sebenarnya ada baris yang mengatakan kita harus menghapus simpul yang ada yang saya lewatkan pertama kali di README.md tetapi setelah menggunakan nvm-windows sebelum saya tidak memeriksanya lagi, saya baru saja menginstalnya melalui chocolatey dan lupa tentang itu . (apakah mungkin untuk melakukan uninstall npm sebagai bagian dari instalasi untuk cokelat atau hanya mendeteksi jika ada dan meminta pengguna untuk mencopotnya terlebih dahulu sebelum mengizinkan mereka menginstal nvm?)

(apakah mungkin untuk melakukan uninstall npm sebagai bagian dari instalasi untuk cokelat atau hanya mendeteksi jika ada dan meminta pengguna untuk mencopotnya terlebih dahulu sebelum mengizinkan mereka menginstal nvm?)

Saya pikir itu mungkin: permintaan ini harus dilakukan ke pengelola paket Chocolatey nvm .

Itu terjadi ketika Anda menginstal Node secara terpisah di mesin Anda (dari situs web atau manajer paket). Menghapus instalannya dan menginstal melalui nvm harus menyelesaikan masalah.

Saya mengalami masalah yang sama dan menggunakan PS dalam mode admin tidak menyelesaikan masalah. (Windows 10.0.18363)

image

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

petrovicz picture petrovicz  ·  4Komentar

martijnsenden picture martijnsenden  ·  3Komentar

David263 picture David263  ·  3Komentar

janpio picture janpio  ·  3Komentar

leiamac picture leiamac  ·  4Komentar