Nvm-windows: Tidak dapat memperbarui npm (node ​​8.4.0)

Dibuat pada 7 Sep 2017  ·  127Komentar  ·  Sumber: coreybutler/nvm-windows

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

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

Lingkungan Saya

  • [] Windows 7 atau lebih rendah (tidak benar-benar didukung karena EOL - lihat wiki untuk detailnya)
  • [ ] Windows 8
  • [ ] Windows 8.1
  • [x] Windows 10
  • [] Windows 10 IoT Core
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016

  • [] Penginstalan Windows saya bukan bahasa Inggris.

Saya menggunakan versi NVM4W:

  • [] 1.1.6
  • [x] 1.1.5
  • [] 1.1.4
  • [] 1.1.3
  • [] 1.1.2
  • [] 1.1.1
  • [] Lebih tua
  • [ ] Lainnya (sebutkan)

Aku sudah...

  • [x] baca README untuk mengetahui masalah npm gotchas & antivirus.
  • [] meninjau wiki untuk memastikan masalah saya belum terselesaikan.
  • [x] diverifikasi Saya menggunakan akun dengan hak administratif.
  • [x] menelusuri 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 (hanya centang yang sesuai):

  • [] settings.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+?)
  • [x] Lingkungan shell standar (terminal / PowerShell)
  • [] Lingkungan shell non-standar (Cmder, Hyper, Cygwin, git)

Perilaku yang Diharapkan

npm i -g npm @ latest harus menginstal versi npm terbaru

Perilaku Sebenarnya

kesalahan:
npm ERR! path C:\Program Files\nodejs\npm.cmd npm ERR! code EEXIST npm ERR! Refusing to delete C:\Program Files\nodejs\npm.cmd: is outside C:\Program Files\nodejs\node_modules\npm and not a link npm ERR! File exists: C:\Program Files\nodejs\npm.cmd npm ERR! Move it away, and try again.

Langkah-langkah untuk mereproduksi masalah:

jalankan sebagai administrator npm i -g npm@latest

help wanted

Komentar yang paling membantu

Saya baru saja menghapus file npm dan npm.cmd dari lokasi nodejs, memindahkan dir node_modules/npm dari lokasi nodejs ke lokasi lain, dan menjalankan node npm-cli.js i -g npm@latest di dalam bin dir di folder yang dipindahkan.

Semua 127 komentar

Masalah yang sama disini.

Saya memiliki masalah yang sama, dan inilah cara saya melewatinya:

jalankan npm install -g npm dan saat sedang berjalan :
hapus (cadangan) file npm.cmd dan npm dari c:\Program Files\nodejs\
hapus (backup) .bin folder dari c:\Program Files\nodejs\node_modules\npm\node_modules , maka seharusnya berhasil
Jika Anda memiliki masalah Refusing to delete dengan modul npm lainnya files/folders Anda harus menghapus ini dan memulai ulang proses pembaruan. Untuk memulai ulang salin npm.cmd kembali ke c:\Program Files\nodejs\ . Kemudian setelah npm install -g npm berjalan, hapus npm.cmd , jika tidak, Anda akan masuk ke masalah Refusing to delete npm.cmd , Anda dapat mengulangi proses itu sampai npm install -g npm puas.

Untuk menghapus file Anda dapat menggunakan pintasan ini: mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\node_modules" seperti yang disarankan oleh @farnetani

env saya:
windows 7 x64, node 8.4, nvm 1.1.6

image

Melihat masalah yang sama

diri
Windows 10
node 8.5.0
di atas permukaan laut 5.3.0
nvm 1.1.0

@tokopedia
Solusi yang lebih mudah adalah menyalin dir node_modules/npm dari lokasi nodejs, menghapus npm bin dan cmd, dan menjalankan node npm-cli.js i -g npm@latest di dalam bin dir di folder yang disalin.

Begitu banyak untuk produksi. Semoga berhasil melakukan dalam naskah.

Mereka harus mengganti nama integrasi berkelanjutan menjadi intebreaktion berkelanjutan

@ 19majkel94 Tidak dapat membuatnya bekerja dengan metode Anda ... ada ide lain yang dapat saya skrip?

Tampaknya npm telah mengubah cara memperbarui dirinya sendiri ... tanpa memberi tahu siapa pun. npx juga diperkenalkan dengan hanya perubahan versi kecil (sebagai lawan dari perubahan besar) .... yang _semantically_ benar, tetapi masih sulit untuk diikuti.

Ternyata ada beberapa file sandboxing yang terjadi. Saya menghabiskan sebagian besar hari ini untuk menyelidiki dan mencoba memperbaikinya, tetapi setiap perbaikan memunculkan masalah lain. Bersabarlah, saya akan memperbaikinya secepat mungkin. Saya satu-satunya yang mengerjakan ini saat ini ... dan kebetulan saya sedang meluncurkan produk yang berbeda (setelah 2 tahun bekerja), jadi PR akan dengan senang hati diterima.

Saya berharap dapat membantu, tetapi saya memiliki pengamatan ... Saya pikir masalah tersebut terkait dengan pintasan ke " C:/Program Files/nodejs ". Mungkin jika persimpangan digunakan sebagai pengganti jalan pintas? Windows tidak dapat membedakan antara direktori 'nyata' dan persimpangan. Jadi, ini akan terlihat seperti node benar-benar diinstal di direktori default. Tidak ada lagi 'operasi' di direktori di luar direktori yang diselesaikan.

https://docs.microsoft.com/en-us/sysinternals/downloads/junction

BTW, menggunakan junction harus membuktikan nvm4w di masa mendatang terhadap perubahan apa pun di masa mendatang pada perilaku npm.

@ wayne-ome
Sudahkah Anda membaca readme?

Opsi kedua adalah menggunakan symlink. Konsep ini membutuhkan penempatan symlink di PATH sistem, kemudian memperbarui targetnya ke direktori instalasi node yang ingin Anda gunakan. Ini adalah pendekatan langsung, dan tampaknya menjadi apa yang orang rekomendasikan .... sampai mereka menyadari betapa sakitnya symlink pada Windows. Inilah mengapa hal itu belum pernah terjadi sebelumnya.

Untuk membuat / memodifikasi symlink, Anda harus menjalankan sebagai admin, dan Anda harus menggunakan Windows UAC (prompt yang mengganggu itu). Untungnya, ini adalah tantangan yang sudah saya selesaikan dengan beberapa skrip pembantu di jendela node. Hasilnya, NVM untuk Windows mempertahankan satu symlink yang dimasukkan ke dalam PATH sistem selama penginstalan saja. Beralih ke versi node yang berbeda adalah masalah mengalihkan target symlink. Akibatnya, utilitas ini tidak mengharuskan Anda menjalankan nvm use xxx setiap kali Anda membuka jendela konsol. Ketika Anda menjalankan nvm use xxx, versi aktif node secara otomatis diperbarui di semua jendela konsol yang terbuka. Ini juga tetap ada di antara boot ulang sistem, jadi Anda hanya perlu menggunakan nvm saat ingin membuat perubahan.

@Bayu_joo
Harap baca tentang persimpangan. Pintasan 'symlink' alias jendela memiliki masalah resolusi ulang direktori target dari proses. Sementara jendela explorer dan terminal tampaknya menanganinya dengan baik, mereka tidak ditangani dengan baik di proses lain. Buka notepad, pilih buka file untuk mendapatkan dialog file jendela standar. Arahkan ke "C:/Program Files/nodejs" dan lihat di mana Anda berakhir.

Menjadi pengalihan ke direktori target, yang seperti yang kita lihat adalah tempat proses berakhir, dapat menyebabkan beberapa masalah menarik.

Persimpangan sama dengan tautan keras di * nix. Windows hanya mendukung ini ke direktori, dan bukan ke file, tetapi hanya itu yang kami butuhkan di sini. Mereka bukan pengalihan. Mereka adalah, untuk semua maksud dan tujuan, direktori, tidak berbeda dengan jalur yang dibuat saat direktori pertama kali dibuat.

Mereka tidak mengarahkan, mereka adalah tujuan. Mereka dapat dihapus dan dibuat lagi dengan setiap perintah 'gunakan'. Oleh karena itu, mereka akan memiliki efek dan kapabilitas yang sama seperti pintasan, tetapi tidak ada penurunan yang menciptakan masalah saat ini.

Ini tidak ada hubungannya dengan junctions / hard link / symlinks. @kuncevic memberikan tangkapan layar yang mengutip kesalahan npm, bagian kuncinya adalah Refusing to delete ... which is outside of .... . Itu adalah pesan kode keras di npm, mencegah operasi lebih lanjut. Intinya: npm menolak pembaruan penuh itu sendiri.

Ini sepertinya tidak menjadi masalah sampai npm 5.xx, dan saya masih menggali detailnya untuk mencari tahu apa yang berubah. Saya mungkin harus menulis solusi (yaitu hack), yang tidak pernah saya sukai. Saya juga ingin memanfaatkan paket msi, yang tampaknya menjadi satu-satunya cara untuk menarik perhatian orang-orang di npm.

Jika Anda sangat membutuhkan pembaruan npm, Anda dapat mengunduhnya melalui https://github.com/npm/npm/archive/vX.X.X.zip dan mengekstraknya ke direktori node_modules dari root instalasi node Anda. Anda harus membuat symlink secara manual di instalasi _node root_ ke npm.cmd dan npx.cmd . Struktur file terakhir akan terlihat seperti ini:

nvm
- v8.5.0
   - node_modules
       - npm
          - bin
               - npm.cmd
               - npx.cmd
          ...
   - node.exe
   - npm.cmd (symlink to v8.5.0/node_modules/npm/bin/npm.cmd)
   - npx.cmd (symlink to v8.5.0/node_modules/npm/bin/npx.cmd)

Oke, saya rasa saya harus mencoba sebelum menjual. Saya mengganti pintasan dengan a
persimpangan jalan, dan mendapatkan masalah yang persis sama. Pikir saya punya sesuatu di sana.
Maaf membuang waktumu.

Pada Rabu, 27 Sep 2017 jam 9:38 AM, Corey Butler [email protected]
menulis:

Ini tidak ada hubungannya dengan junctions / hard link / symlinks. @tokopedia
https://github.com/kuncevic menyediakan tangkapan layar yang mengutip kesalahan npm,
bagian kuncinya adalah Menolak untuk menghapus ... yang berada di luar ..... Itu
adalah pesan kode keras di npm, mencegah operasi lebih lanjut. Intinya:
npm menolak pembaruan penuh itu sendiri.

Ini sepertinya tidak menjadi masalah sampai npm 5.xx, dan saya masih menggali
melalui detail untuk mencari tahu apa yang berubah. Saya mungkin harus menulis
solusi (yaitu hack), yang tidak pernah saya sukai. Saya juga mencari
memanfaatkan paket msi, yang tampaknya menjadi satu-satunya cara untuk mendapatkan file
perhatian orang-orang di npm.

Jika Anda sangat membutuhkan pembaruan npm, Anda dapat mengunduhnya melalui
https://github.com/npm/npm/archive/vX.XXzip dan ekstrak ke file
node_modules direktori root instalasi node Anda. Anda harus melakukannya
membuat symlink secara manual di root instalasi node ke npm.cmd dan
npx.cmd. Struktur file terakhir akan terlihat seperti ini:

nvm

  • v8.5.0

    • node_modules



      • npm





        • tempat sampah







          • npm.cmd




          • npx.cmd




            ...










    • node.exe

    • npm.cmd (symlink ke v8.5.0 / node_modules / npm / bin / npm.cmd)

    • npx.cmd (symlink ke v8.5.0 / node_modules / npm / bin / npx.cmd)

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-332523342 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AEZgRbY_GVys0bfnD_kaM_PYl6QUmZKDks5smk_PgaJpZM4PPcf-
.

Baru saja memperbarui 5.4.1 → 5.4.2 tanpa masalah.

c:\>npm install npm -g
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
C:\Program Files\nodejs\npm -> C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
+ [email protected]
removed 1 package and updated 2 packages in 12.125s

@kuncevic - terima kasih ... itu indikasi masalahnya harus dalam npm 5.4.3+.

npm -g install [email protected] masih gagal untuk saya, kesalahan yang sama.
[Sunting] BTW, itu mulai dari 5.3.0, yang diinstal dengan nvm install 8.5.0

Pada hari Jumat, 29 Sep 2017 pukul 11:41, Corey Butler [email protected]
menulis:

@kuncevic https://github.com/kuncevic - terima kasih ... itu menunjukkan
masalah harus dalam npm 5.4.3+.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-333161774 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AEZgRQnw_jxuz_dDZl3OsZVO_MNkHlBGks5snQ-qgaJpZM4PPcf-
.

Bagi saya itu gagal dari Node 8.4.0 dan yang lebih baru. Ini menginstal NPM 5.3.0, dan kemudian tidak mengizinkan saya untuk memutakhirkannya.
Versi Node yang lebih lama (saya punya 4.8.4) memungkinkan NPM untuk memperbarui secara normal.

Manusia. npm 5 dan nvm sangat menyebalkan (tapi saya menyalahkan npm 5 di sini karena 4 bekerja dengan baik). Saya telah menurunkan ke npm 4.6.1 minggu lalu dan hanya mencoba mencoba 5.4.2 lagi. Sepertinya npm telah dicopot saat mencoba memasang react-native-cli, paket yang sama sekali berbeda:

Manuel@Manuel-406 /cygdrive/d/htdocs/wallet
$ npm install -g react-native-cli
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm WARN Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN  { Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN   stack: 'Error: EPERM: operation not permitted, scandir \'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules\'',
npm WARN   errno: -4048,
npm WARN   code: 'EPERM',
npm WARN   syscall: 'scandir',
npm WARN   path: 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules' }
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm',
npm ERR!   parent: 'v8.5.0' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Manuel\AppData\Roaming\npm-cache\_logs\2017-10-02T14_54_04_833Z-debug.log

Manuel@Manuel-406 /cygdrive/d/htdocs/_git/wallet
$ npm install -g react-native-cli
sh: npm: Kommando nicht gefunden.
  • ubuntu : 16.04.2 LTS
  • nodejs : 8.6.0
  • npm : 5.3.0
npm i -g npm<strong i="15">@latest</strong>

/home/user/.npm-global/bin/npm -> /home/user/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/user/.npm-global/bin/npx -> /home/user/.npm-global/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
added 68 packages, removed 164 packages and updated 14 packages in 14.307s

npm -v masih mencetak 5.3.0 dan tidak diperbarui?

@yavorski - ini adalah nvm untuk Windows. Saya pikir Anda ingin nvm untuk * nix .

Saya telah mengonfirmasi bahwa masalah ini adalah kotak pasir dalam npm 5.xx Edisi npm sebelumnya tidak memiliki ini. Sayangnya, perbaikannya tidak sepele, dan dilihat dari pengalaman @yavorski , ini tidak spesifik untuk proyek ini.

Ya tidak nvm dalam kasus saya. Linux + Nodejs dari nodesource.

Mengalami masalah yang sama di sini ...

npm versi 5.4.2
versi node 8.7.0
jendela 10

Saya memiliki masalah yang sama。

Windows 10
mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\"

dan kemudian

npm i -g npm@latest

Dipecahkan untuk saya!

Saya memiliki perilaku yang mirip dengan Node v8.9.0. Itu datang dengan npm 5.5.1, dan ketika saya mencoba untuk menurunkan ke npm 4, itu memberi saya kesalahan refusing to delete .

Saya mencoba memperbaikinya secara manual, dengan menarik npm dari file zip resmi, dan saya mendapat kesalahan ini:
image

Saya menduga kesalahan ini terjadi secara diam-diam dan merusak penginstalan. Ketika saya menginstal ke C:\nvm , saya tidak mendapatkan kesalahan ini dan semuanya bekerja seperti yang diharapkan.

@RichardMisiak apakah Anda mencoba memindahkan pemasangan nvm ke jalur yang lebih dekat ke C:\ ? Suka C:\nvm ? Itu menyelesaikan masalah bagi saya.

Dengan node terbaru 9.1 yang membawa npm 5.5.1 secara default, ada lebih banyak "kesenangan" https://github.com/npm/npm/issues/19019 , mengatakan dengan npm berikutnya rilis itu mungkin diperbaiki.

Solusi saya TIDAK terlalu elegan tetapi berhasil. Ini dia.
Setelah menjalankan npm install [email protected] -g saya mendapatkan error berikut:

npm ERR! path d:\node\npm.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete d:\node\npm.cmd: is outside d:\node\node_modules\npm and not a link
npm ERR! File exists: d:\node\npm.cmd
npm ERR! Move it away, and try again.
...

Solusi saya adalah sebagai berikut:

  1. npm install -g yarn
  2. Nyalakan ulang komputernya
  3. Jalankan yarn global bin , dan tambahkan folder yang ditampilkan ke variabel PATH env Windows
  4. Buka folder tempat npm.cmd berada (periksa ini dari kesalahan yang baru saja kita dapatkan di npm install [email protected] -g run: d:\node\ dalam kasus saya) dan:
    2.1. Ubah nama npm menjadi npm.original (atau hapus saja)
    2.1. Ubah nama npm.cmd menjadi npm.cmd.original (atau hapus saja)
  5. Tutup terminal dan buka yang baru
  6. yarn global add [email protected]
  7. npm install [email protected] -g (ini akan menginstal npm menggunakan versi npm yang terletak di folder yarn global bin )
  8. yarn global remove npm (untuk menghapus versi npm yang diinstal oleh benang, dan hanya menyimpan versi yang diinstal oleh npm itu sendiri)

Cukup ganti nama batch SEBELUM mengupgrade:
jalankan cmd

cd %ProgramFiles%\nodejs
ren npm.cmd npm2.cmd
ren npm npm2 
npm2 install npm<strong i="7">@latest</strong> -g

hapus file setelah peningkatan:

del npm2
del npm2.cmd

@ rolf-schmidiger Dalam pengalaman saya, saya harus melakukan penggantian nama yang sama dengan npx dan npx.cmd seperti pada npm dan npm.cmd.

Sederhana sekali dan efektif, @ rolf-schmidiger. Terima kasih.

@ Coreybutler , ada ide tentang solusi? Hanya penasaran. Tidak ada tekanan.

Tidak ada solusi yang tercantum di sini yang berfungsi untuk saya, dan pada akhirnya lebih cepat menggunakan nvmw uninstall untuk menghapus instalasi Node dan kemudian nvmw install untuk menginstalnya kembali.

Bukankah nvmw alat yang sepenuhnya berbeda?

@sukasukaa_sukaa Kamu benar. Menarik bahwa masalah yang sama terjadi pada keduanya!

Berdasarkan jawaban @ rolf-schmidiger, saya membuat skrip pembaruan untuk itu ... Agak menyebalkan bahwa ini adalah satu-satunya cara saya dapat membuatnya berfungsi.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
mv npm.cmd npm2.cmd
mv npm npm2
npm2 install -g npm<strong i="6">@latest</strong>
rm npm2
rm npm2.cmd

MEMPERBARUI

Ini yang terbaru yang berhasil untuk saya.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
rm npm npx npm.cmd npx.cmd
mv node_modules/npm node_modules/npm2
node node_modules/npm2/bin/npm-cli.js i -g npm<strong i="12">@latest</strong>
rm -rf node_modules/npm2/

Saya baru saja menginstal semuanya untuk pertama kalinya, jadi sepertinya tidak ada saran di atas yang sesuai untuk saya. Saya terus mendapatkan ini ketika mencoba mengeksekusi npx create-react-app :

npx : The term 'npx' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.

Windows 10 Pro, build 1703, instal ulang baru sekitar 2 minggu yang lalu dengan Mode Pengembang diaktifkan
Versi node 9.4.0
npm 5.6.0

Petunjuk penginstalan agak membingungkan (ada beberapa file untuk diunduh, untuk apa file no-install itu?) Tetapi saya akhirnya menemukan bahwa Anda harus mengaktifkan nvm 'dan kemudian mengeluarkan perintah' gunakan ', (bingung saya karena saya tidak menggunakan manajer paket terpisah jadi saya pikir bagian itu tidak berlaku) tetapi kemudian saya masih mendapatkan kesalahan di atas.

Saya mencoba segala kemungkinan. Saya menghapus instalan nvm dan menginstal versi yang berbeda, saya memeriksa jalur lingkungan, saya kehabisan ide. Saya akhirnya baru saja melakukan npm install -g npx dan tampaknya berhasil. Persetan.

Saya baru saja menghapus file npm dan npm.cmd dari lokasi nodejs, memindahkan dir node_modules/npm dari lokasi nodejs ke lokasi lain, dan menjalankan node npm-cli.js i -g npm@latest di dalam bin dir di folder yang dipindahkan.

Saya mendapat masalah yang sama (lingkungan windows 10) ketika mencoba memutakhirkan node saya 8.8.0 dengan npm 5.5.1 ke node 9.8.0 tetapi instalasi node 9.8.0 tidak memperbarui npm saya dari 5.5.1 ke terbaru. Setelah itu saya mencoba npm i -g npm dan mendapatkan error:

C:\Repository\myproject>npm i -g npm
npm WARN npm npm does not support Node.js v9.8.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8.
npm WARN npm You can find the latest version at https://nodejs.org/
WARNING: You are likely using a version of node-tar or npm that is incompatible with this version of Node.js.
Please use either the version of npm that is bundled with Node.js, or a version of npm (> 5.5.1 or < 5.4.0) or node-tar (> 4.0.1) that is compatible with Node.js 9 and above.
npm[19860]: src\node_zlib.cc:436: Assertion `args.Length() == 7 && "init(windowBits, level, memLevel, strategy, writeResult, writeCallback," " dictionary)"' failed.
 1: node::DecodeWrite
 2: node::DecodeWrite
 3: uv_loop_size
 4: v8::internal::wasm::SignatureMap::Find
 5: v8::internal::Builtins::CallableFor
 6: v8::internal::Builtins::CallableFor
 7: v8::internal::Builtins::CallableFor
 8: 000003BEBC8843C1

Solusi @arfaWong bekerja dengan sempurna untuk saya (Saya mencampurkan sedikit dengan solusi @ rolf-schmidiger dan mengganti namanya alih-alih pindah)

Ini sangat sederhana .. Jika Anda menggunakan windows, silakan periksa https://github.com/felixrieseberg/npm-windows-upgrade
Jika Anda ingin melakukannya secara manual, silakan periksa dokumentasi https://github.com/npm/npm/wiki/Troubleshooting#upgrading -on-windows

Saya mengumpulkan skrip PowerShell untuk mengotomatiskan solusi @arfaWong : https://gist.github.com/noahleigh/ba34e18b3e0bc4a6a4e93ed7a480536e

Diuji pada PowerShell Core 6.0

Masalah yang sama dengan

node-v8.6.0-win-x64
node-v9.9.0-win-x64

dan jika Anda mengganti nama file atau memindahkannya, itu akan gagal karena tidak dapat membuat folder, silakan jalankan kembali sebagai administrator. Terlepas dari kenyataan bahwa saya tidak memiliki hak admin pada mesin ini, diragukan bahwa ini akan mengubah apa pun, karena pengguna saat ini memiliki izin mkdir di folder itu ...

Kapan itu akan diperbaiki?

@arfa_sihombing !!

Saya menggunakan cmder , nvm 1.1.6 dan node 8.10.0
Diperbarui dari npm 5.6.0 ke 5.8.0: tada:

cd %programfiles%/nodejs
rm npm npm.cmd
mv node_modules/npm node_modules/npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="17">@latest</strong> -g
rm -rf npm2

terima kasih atas solusinya @ayvarot
Saya menggunakan nvm 1.1.15 dan node 9.8.0
Diperbarui dari 5.6.0 ke 5.8.0

Solusi oleh @ayvarot bekerja sebagian untuk saya. Mungkin karena saya menjalankannya pada msys git bash dengan ConEmu? Bagaimanapun, ini cuplikan saya yang disesuaikan:

which npm && \
    cd "`which npm | xargs -0 dirname`" && \
    mv npm npm2 && \
    mv npm.cmd npm2.cmd && \
    mv ./node_modules/npm ./node_modules/npm2 && \
    node node_modules/npm2/bin/npm-cli.js i npm<strong i="7">@latest</strong> -g && \
    rm -r npm2 npm2.cmd ./node_modules/npm2

npm -v

(Menggunakan nvm 1.1.6 pada node 8.10.0 x32 dan memperbarui dari npm 5.6.0 ke 5.8.0)

@arfaWong Itu berhasil ... Meskipun bukan yang ideal ...
Akan menunggu tim npm untuk memperbaikinya ...
.
Menghadapi ini dengan npm 5.6.0

Versi Windows DOS biasa dari @ayvarot

pushd %ProgramFiles%\nodejs
del npm npm.cmd
move node_modules\npm node_modules\npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="8">@latest</strong> -g
rd node_modules\npm2 /S /Q
popd

Solusi @arfaWong bekerja seperti pesona, terima kasih!

Windows 10:
cd (folder nodejs Anda)
ren npm.cmd npm2.cmd
del npm
del npx

npm2 instal npm -g

del npm2.cmd

Saya baru saja mengganti nama npm dan npx btw, dan kemudian menghapusnya setelah itu, tetapi saya pikir mereka bisa langsung dihapus.

Ini tampaknya sekarang dipicu oleh pemasangan Nodejs versi 10.0.0 menggunakan nvm.

@arfaWong Satu-satunya solusi yang berhasil guys. Coba ini.

@ rolf-schmidiger bekerja untuk saya! Terima kasih

Saya menyiasatinya dengan menggunakan Yarn, yang sudah saya instal.

nvm use 10.0.0

# Have npm remove itself
npm uninstall -g npm

# Install npm into the yarn directory structure
yarn global add npm

# Use npm to install itself into the nodejs directory structure
npm install -g npm

# Remove the yarn installation of npm
yarn global remove npm

Ini berhasil untuk saya:

nvm use <some_other_version>
cd .../nvm/<version_to_update>
npm un npm
npm i npm<strong i="6">@latest</strong>

gunakan benang daripada npm itu sendiri, coba yarn global add npm@latest , coba tingkatkan benang jika gagal.

Saya juga mendapat kesalahan Menolak untuk menghapus saat mencoba memperbarui npm menggunakan npm install npm<strong i="6">@latest</strong> --global .

Paket npm-windows-upgrade juga tidak dapat memperbarui, menyarankan untuk menginstal ulang Node.js, meskipun ini adalah instalasi unzip yang baru.

Saya dapat memutakhirkan dengan memindahkan file npm dan npx, seperti yang disarankan sebelumnya, menggunakan skrip PowerShell ini:

# Locate the Node.js installation
# containing the npm and npx files that are preventing the upgrade
Get-Command node.exe | % { Split-Path $_.Source } | cd

$CurrentNpmVersion = npm --version

# Version the current npm scripts to make room for the new version:
"npm", "npm.cmd", "npx", "npx.cmd" | %{ Get-ChildItem -Filter $_ } |
  Rename-Item -NewName { "$($_.BaseName)-$CurrentNpmVersion$($_.Extension)" }

# Use the current npm command to install the new version:
Invoke-Expression "npm-$($CurrentNpmVersion).cmd install npm<strong i="11">@latest</strong> --global"

Hai @awarberg Saya mencoba skrip Anda tetapi saya mendapatkan kesalahan ini. Saya mencoba dengan benang juga, tidak berhasil ... Windows bodoh! 💢

.\update_node.ps1
npm ERR! path C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! code EEXIST
npm ERR! Refusing to delete C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno: is outside C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\errno and not a link
npm ERR! File exists: C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! Move it away, and try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\vitom\AppData\Roaming\npm-cache\_logs\2018-05-11T12_55_55_902Z-debug.log

@lamuertepeluda menyesal mendengar Anda masih tidak dapat meningkatkan. File yang disebutkan ...\node_modules\.bin\errno tidak disebutkan sebelumnya. Ini mungkin instalasi yang rusak karena beberapa upaya peningkatan. Mungkin saat yang tepat untuk menginstalnya kembali, seperti yang disarankan oleh npm-windows-upgrade.

Adapun "Windows bodoh" saya tidak setuju. Kemungkinan besar, NPM dirancang untuk Linux terlebih dahulu, dan dukungan Windows dipasang kemudian, setelah dipikirkan. Saya melihat ini secara teratur di paket NPM lain juga. Masalah umum adalah kesulitan untuk menginstal dan memerlukan langkah-langkah manual dan tidak berdokumen untuk memastikan prasyarat perangkat lunak. Masalah umum lainnya adalah jalur sistem file case sensitive.

Saya membuat skrip batch untuk menjalankan solusi @arfaWong secara otomatis jika ada yang tertarik.

<strong i="7">@echo</strong> off
SETLOCAL EnableDelayedExpansion

if [%1] == [] (
    echo Pass in the version you would like to install, or "latest" to install the latest npm version.
) else (
    set wanted_version=%1

    if "!wanted_version!" == "latest" (
        for /f %%i in ('npm show npm version') do set wanted_version=%%i
    )

    for /f %%i in ('npm -g -v') do set cur_version=%%i

    if "!cur_version!" == "!wanted_version!" (
        echo Already on npm version !wanted_version!.
    ) else (
        echo Updating to !wanted_version!...

        set node_path=!PROGRAMFILES!\nodejs

        rename "!node_path!\npm" npm2
        rename "!node_path!\npm.cmd" npm2.cmd
        rename "!node_path!\node_modules\npm" npm2
        node "!node_path!\node_modules\npm2\bin\npm-cli.js" i npm@!wanted_version! -g

        for /f %%i in ('npm -g -v') do set new_version=%%i

        echo New version installed is !new_version!

        if "!new_version!" == "!wanted_version!" (
            echo Successfully updated to !wanted_version!. Cleaning up backups...
            del "!node_path!\npm2"
            del "!node_path!\npm2.cmd"
            <strong i="8">@RD</strong> /S /Q "!node_path!\node_modules\npm2"
            echo Update complete.
        ) else (
            echo Something went wrong. Rolling back.
            if exist "!node_path!\npm" (
                del "!node_path!\npm"
            )
            if exist "!node_path!\npm.cmd" (
                del "!node_path!\npm.cmd"
            )
            if exist "!node_path!\node_modules\npm" (
                <strong i="9">@RD</strong> /S /Q "!node_path!\node_modules\npm"
            )
            rename "!node_path!\npm2" npm
            rename "!node_path!\npm2.cmd" npm.cmd
            rename "!node_path!\node_modules\npm2" npm
        )
    )
)

Saya membuat inti dari skrip kelelawar @kufii . Sedikit dimodifikasi sehingga Anda dapat menentukan versi yang akan diinstal daripada selalu menginstal lastet.

https://gist.github.com/johnmcase/d31b799b9030327091a0e74880e4c530

--Edit: Diperbarui untuk mencerminkan skrip @kufii yang diperbarui di atas

@johnmcase ide bagus, saya memperbarui komentar saya sehingga Anda dapat meneruskan versi yang ingin Anda instal sebagai argumen (atau "terbaru" untuk mendapatkan versi terbaru)

Versi terbaru @kufii bekerja lebih baik untuk saya daripada memiliki nomor yang diinginkan di-hardcode ke dalam skrip.

@kufii @arfaWong

Terima kasih!!
notworthy

@johnmcase Worked menyukai pesona, bookmark.

Hanya satu masalah dengan skrip ini yang ditemukan: ketika saya memilih untuk menginstal 5.6 itu berhasil menginstal 5.6.0 dan telah diputar kembali karena "5.6" berbeda dari "5.6.0" ...
Terima kasih untuk naskahnya!

Memiliki masalah yang sama lagi baru-baru ini dengan nvm versi 1.1.7
Solusi @arfaWong dan @ayvarot berhasil terakhir kali. Tapi kali ini Idkw folder npm tidak ditemukan. Jadi saya sarankan untuk tidak menghapus folder npm2 untuk berjaga-jaga.

Saya baru saja menghabiskan hampir dua hari untuk men-debug kesalahan yang disebabkan oleh masalah ini dan mencoba hampir setiap perbaikan untuk meningkatkan NPM saya dari 5.6.0 menjadi 6.1.0. Perbaikan @arfaWong berhasil untuk saya tanpa masalah lebih lanjut. Terima kasih!

@arfa Works !!

Saya melakukannya dengan metode benang, tetapi ini juga harus berhasil:

  1. Dapatkan npm dari https://github.com/npm/cli/releases
  2. Jalankan perintah berikut dari direktori tempat Anda mengekstraknya dari folder bin

    • node npm-cli.js i -g npm@latest

    • Ini mungkin mengeluh tentang file yang perlu dihapus, bagi saya, saya memiliki nvm dan nodejs di direktori root pada drive saya sehingga lokasi file program standar tidak dapat diterapkan untuk saya. Saya menukarkan npm / npx / node_modules dari folder nodejs saya (saya tidak takut untuk mengunduh ulang paket dan saya sedang bekerja dengan instalasi baru sekarang).

  3. Ini harus diinstal dengan benar dan Anda harus dapat menghapus folder yang Anda ekstrak dan untung!

Cukup mirip dengan stackoverflow yang saya tulis ini.
https://stackoverflow.com/questions/49748307/how-to-reinstall-npm

@ayvarot Terima kasih banyak !!!!!!!! Saran Anda berhasil untuk saya di Windows 10.

Bekerja untuk saya hanya dengan mengganti nama %Node%\npm.cmd , %Node%\npm dan %Node%\npx.cmd , tidak diperlukan

Solusi yang disarankan
https://github.com/coreybutler/nvm-windows/issues/389

Untuk beberapa alasan skrip di atas tidak berfungsi untuk saya dan saya terlalu lelah menyelesaikan ini untuk mencari tahu alasannya.

Bug konyol ini masih ada, jadi saya membuat skrip yang berfungsi. Harus ditempatkan di dalam folder Node tempat npm.cmd tinggal.

:: Update NPM with workaround of "npm ERR! code EEXIST" bug https://github.com/coreybutler/nvm-windows/issues/300

<strong i="7">@ECHO</strong> OFF

SETLOCAL

SET CDir=%~dp0%

REN "%CDir%\npm.cmd" "npm1.cmd"
DEL "%CDir%\npm"
DEL "%CDir%\npx.cmd"
DEL "%CDir%\npx"

CALL "%CDir%\npm1.cmd" update && DEL "%CDir%\npm1.cmd"

Simpan ini sebagai npmup.cmd dan gunakan sebagai pengganti npm update

saat menggunakan skrip @kufii
Perhatikan bahwa lokasi instalasi harus diganti jika Anda mengubah path node.js seperti saya, cukup ganti kode set node_path=!PROGRAMFILES!\nodejs menjadi set node_path=YOUR_NODE_PATH

Solusi @kraihn tidak berfungsi sekarang dengan benang terbaru kecuali Anda menambahkan tempat benang ke jalur:

  1. dapatkan tempat sampah path oleh yarn global bin
  2. tempelkan tempat benang path ke variabel path

Setahun sekali saya bersemangat, memutuskan untuk menginstal NVM pada Windows sambil berpikir "kali ini akan berhasil", tetapi selalu ada sesuatu yang rusak ... Yah, saya rasa ini kembali ke penginstal klasik Node.js. Saya akan menggunakan WSL, tetapi sayangnya beberapa aplikasi Electron mengharuskan Anda menginstal Node pada OS host.

Apakah ini benar-benar tidak dapat diperbaiki oleh NVM saja?
Sejauh yang saya baca di utas yang berbeda, itu juga akan menjadi masalah npm atau Node, tetapi tidakkah ada yang dapat dilakukan oleh NVM sendiri? Jika tidak, masalah ini membuat NVM tidak berguna di Windows.
Harus menghapus file sendiri saat berada di tengah proses pembaruan atau bahkan membuat skrip untuk itu atau solusi apa pun yang disebutkan beberapa orang, bukanlah solusi. Ini neraka!
Satu-satunya hal yang saya coba (komentar di utas lain, bukan yang ini, menyebutkan beberapa langkah tentang cara menggunakan benang untuk menambahkan npm) tidak berhasil.

@MrCroft sementara saya setuju bahwa alangkah baiknya jika "hanya berfungsi", segala sesuatunya jauh dari "neraka" dan bahkan lebih jauh dari "tidak berguna".
Saya telah menjadi pengguna yang bahagia dari proyek ini selama sekitar 2 tahun sekarang.
Masalah ini hanya terjadi jika Anda ingin memperbarui npm global itu sendiri. Menginstal versi node baru melalui nvm tidak memiliki masalah dan node baru hadir dengan paket npm yang lebih baru.
Jika Anda menemukan diri Anda mengupgrade npm begitu sering di dev env Anda sehingga hidup Anda menjadi neraka karena ini maka Anda mungkin melakukan sesuatu yang salah.
Saya pikir hanya dua kali sejak saya menjadi pengguna nvm saya harus benar-benar meningkatkan npm itu sendiri dan mengalami masalah ini. Tidak seburuk yang Anda buat.

Berikut skrip saya untuk meningkatkan npm di nvm:

https://stackoverflow.com/a/50955293/491553

Saya baru saja melakukannya pada pemasangan baru. Bekerja dengan baik.

Mungkin seseorang harus menguji npm updater TANPA HAK ADMIN ...

Saya pikir ini lebih merupakan bug versi npm sebelumnya daripada yang nvm .

Namun, untuk memperbarui npm hapus di folder nvm/[node version] (bagi saya v10.15.3 ) file berikut:

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm.cmd
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx.cmd

Ubah nama folder npm menjadi npm2

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2

Buka konsol apa pun dengan hak admin (atau bahkan klik kanan mouse pada pintasan vscode, lalu klik kanan mouse pada Kode Visual Studio dan tekan Jalankan sebagai administrator ) dan ketik perintah:

cd C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2\bin
node npm-cli.js i -g npm<strong i="22">@latest</strong>

Pembaruan: seperti yang ditunjukkan @ Fr0sT-Brutal, hak admin seharusnya tidak diperlukan pada saat ini, karena kami baru saja menghapus file yang menimbulkan konflik 👍

Selesai.

Hapus folder C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2 .

(Ini hanya selangkah demi selangkah mereproduksi apa yang dikatakan @ 19majkel94 di atas)

@createdbyjurand : TANPA hak admin ...
Anda tidak memerlukan hak admin untuk mengganti sekumpulan file dengan sekumpulan file lain ...
(selama Anda memiliki akses tulis ke file / direktori)

@createdbyjurand : TANPA hak admin ...
Anda tidak memerlukan hak admin untuk mengganti sekumpulan file dengan sekumpulan file lain ...
(selama Anda memiliki akses tulis ke file / direktori)

Aku tahu. Tapi, folder Program Files di Windows 10 memiliki akses hak khusus. Itulah sebabnya banyak aplikasi menginstal sendiri akhir-akhir ini di folder Roaming atau Lokal. Bahkan Visual Studio Code memiliki dua penginstalan terpisah. Satu untuk Lokal dan satu untuk Program Files. Salah satu cara untuk mengatasinya adalah dengan mengubah lokasi folder nvm nodejs. Kedua, ubah opsi Keamanan Folder tetapi itu membuat folder ini tidak aman. Apa yang saya tulis, apa yang @ 19majkel94 tulis, adalah solusi untuk memperbaiki pembaruan npm apa adanya, menggunakan instalasi nvm standar dengan pengaturan default untuk orang-orang yang hanya ingin memperbaiki masalah tanpa masuk ke lebih banyak perubahan sistem atau konfigurasi. Karena meskipun Anda mengubah folder atau hak akses, Anda masih harus melakukan semua langkah yang saya sebutkan, dan satu-satunya perubahan adalah menggunakan konsol tanpa hak admin.

@createdbyjurand : Sekadar mengatakan, kami menjalankan node di lingkungan perusahaan, dan sebagai pengembang, kami tidak memiliki hak admin. Jika npm-update atau skrip di dalamnya memerlukan hak admin, yang merusak dev-environment kami, dan kemudian kami tidak dapat menginstal paket node apa pun, dan kemudian kami tidak dapat bekerja.

@createdbyjurdan apa yang Anda perlukan hak admin?

@createdbyjurdan apa yang Anda perlukan hak admin?

Poin bagus, saya tidak melakukannya, karena saya baru saja menghapus file yang menimbulkan konflik 👍

Oh begitu. Saya tidak pernah membayangkan memasang NPM di PF, bagi saya agak aneh. Saya akan mengatakan mereka yang melakukannya adalah alasan masalah mereka :).

Oh begitu. Saya tidak pernah membayangkan memasang NPM di PF, bagi saya agak aneh. Saya akan mengatakan mereka yang melakukannya adalah alasan masalah mereka :).

Baru-baru ini ya. Microsoft mengubah hak akses untuk folder Program Files . Itulah sebabnya banyak perangkat lunak sekarang bergerak menuju direktori pemasangan folder Roaming atau Lokal . Dan inilah mengapa belum lama ini semuanya bekerja dengan baik dengan npm, dan sekarang tiba-tiba kita mendapatkan ini:

$ npm i -g npm<strong i="11">@latest</strong>
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { [Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm']
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack:
npm ERR!    'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\fehTH4RTH\AppData\Roaming\npm-cache\_logs\2019-03-22T14_28_26_153Z-debug.log

Oh begitu. Saya tidak pernah membayangkan memasang NPM di PF, bagi saya agak aneh. Saya akan mengatakan mereka yang melakukannya adalah alasan masalah mereka :)

@ Fr0sT-Brutal yah, demi organisasi, saya melakukannya juga. Jika saya sudah memiliki folder sistem yang ditujukan untuk aplikasi (Program Files), setiap kali saya menginstal apa pun - saya menginstalnya di folder "Program Files". Terutama untuk tidak mencemari folder root drive dengan folder acak seperti "nodejs" atau "nvm" dan juga tidak sampai ke jalur yang panjang, seperti "c: / Users / My Name / Roaming / ApplicationData / apa saja", saya lebih suka "c : / Program Files / apapun ".
Meskipun demikian, meskipun itu akan benar-benar mengganggu saya untuk bekerja seperti itu (memiliki nvm | node di tempat di luar file program), masih ... Saya setidaknya sudah mencoba dan saya telah menginstalnya di c: / nvm (seperti untuk versi node, saya sudah mencoba c: / node dan sebagai subfolder dari nvm: c: / nvm / node sesuatu seperti itu). Tetapi masalah tetap ada, npm masih tidak dapat diperbarui dengan menjalankan npm i -g npm . Terima kasih Tuhan, karena saya tidak ingin hidup dengan hal-hal yang diinstal di luar folder Program Files. Tentu saja saya akhirnya menyerah dan tetap menggunakan 1 versi node setiap saat, diinstal menggunakan installer node default untuk Windows dari nodejs.org

@createdbyjurand baru-baru ini? IIRC, PF menjadi menulis-terbatas untuk pengguna sejak XP.
@MrCroft Saya selalu bertanya-tanya bagaimana orang dapat hidup dengan semua hal yang terkubur di dalam PF ... Space in path berarti kutipan selalu diperlukan, kegilaan dengan x64-PF dan x32-PF menambahkan satu iterasi untuk pencarian, dan - yang paling membuat frustrasi - a struktur perangkat lunak yang benar-benar datar. Saya memiliki> 100 aplikasi bahkan di PC rumah dan 50 aplikasi bahkan lebih di tempat kerja. Saya akan melompat keluar dari jendela jika saya harus mencari aplikasi di dalam PF.

Anda tidak harus memasukkannya ke dalam
C:/Users/My Name/Roaming/Whatever
Anda dapat menggunakan direktori apa pun asalkan dapat ditulisi oleh pengguna.

Saya memiliki semua program di D: Program, tidak ada yang memerlukan hak admin, termasuk nodejs, python, cmake, JetBrains, go, OpenOffice, dll.

Kemudian saya menempatkan semuanya ke dalam variabel lingkungan jalan dan registri untuk current_user.
Bekerja seperti pesona.
Tidak perlu penginstal blackbox jelek.

Jika saya perlu menemukan sesuatu, saya menggunakan locate32, saya bahkan tidak menelusuri folder / Desktop / StartMenu.
Locate32 jauh lebih cepat.
Atau saya menjalankannya melalui CTRL + R, karena Anda dapat mengatur alias di registri di HKCU.

Satu-satunya alasan untuk memiliki sesuatu di C:\ProgramFiles adalah ketika Anda ingin menginstal aplikasi tertentu untuk setiap pengguna di mesin, yang sebagai pengembang dalam banyak kasus, tidak Anda inginkan, karena memiliki program di jalur / registri seluruh sistem dapat merusak program pengguna lain, atau menghambat kemampuan mereka untuk menggunakan versi yang berbeda dari versi yang Anda gunakan. Juga, ini sangat berguna di server - pengguna1 dapat menggunakan nodejs-nya, user2 nodejs lain, dan tidak menggigit dirinya sendiri.

Dengan menghapus hak admin dan menyimpan semuanya di pengguna, Anda memastikan bahwa satu pengguna tidak dapat merusak program & pengaturan pengguna lain. Anda juga memastikan aplikasi Anda berjalan tanpa hak admin, yang terkadang berguna. Dan yang paling buruk, Anda selalu dapat menghapus dan membersihkan akun pengguna dan menyusunnya kembali nanti.

Dengan cara itu saya dapat menjalankan sekitar 1.000 program, semua tanpa menghabiskan satu menit untuk menginstal.
Bahkan JetBrains IDE dan PostgreSQL bekerja seperti itu.
Satu-satunya program yang saya tidak bisa bekerja seperti ini adalah MS-Office, SQL-Server dan Visual-Studio.
npm tidak boleh ditambahkan ke daftar yang tidak bereputasi ini, dan semua karena tidak dapat diganggu untuk memindahkan beberapa file yang ada alih-alih menimpanya.

Bagaimanapun, saya memiliki nodejs-update-script saya sendiri sekarang , yang mendeteksi folder node dari variabel lingkungan jalur.

Saya baru saja mengganti nama file ini menjadi "1"
npm1.cmd, npm1, npx1, npx1.cmd

dan lari:
" pembaruan npm1 -g "

Sepertinya itu bekerja dengan baik, ada pemikiran?

mungkin ini dapat dibangun ke dalam nvm - mungkin dengan menambahkan tanda versi npm bersama dengan versi node dan tanda arsitektur saat menginstal, dan fungsi update-nvm

Saya baru saja mengganti nama file ini menjadi "1"
npm1.cmd, npm1, npx1, npx1.cmd

dan lari:
" pembaruan npm1 -g "

Sepertinya itu bekerja dengan baik, ada pemikiran?

Itu berhasil untuk saya juga, tetapi saya harus menghapus folder itu
nvmv10.15.3node_modulesnpmnode_modules.bin
karena kesalahan saat menunjuk ke folder ini masih muncul.

Terima kasih!

Hai teman-teman, saya telah membuat paket untuk memperbarui versi npm lokal dari Program Filesnodejs
Periksa
npm install -g npm-win-upgrade
npm-win-upgrade

Tidak yakin apakah kompatibel dengan NVM sama sekali tetapi menggunakan process.execPath untuk menemukan folder node.exe, jadi itu harus dilakukan.

@dolpsdw Saya mendapatkan kesalahan berikut saat menjalankan npm-win-upgrade :

Npm instaled as Global package: uninstalling...                                                                     
(node:10192) UnhandledPromiseRejectionWarning: Error: Command failed: npm uninstall npm -g                          
npm ERR! path C:\Program Files\nodejs\npx.cmd                                                                       
npm ERR! code EEXIST                                                                                                
npm ERR! Refusing to delete C:\Program Files\nodejs\npx.cmd: is outside C:\Program Files\nodejs\node_modules\npm and
 not a link                                                                                                         
npm ERR! File exists: C:\Program Files\nodejs\npx.cmd                                                               
npm ERR! Move it away, and try again.                                                                               

npm ERR! A complete log of this run can be found in:                                                                
npm ERR!     C:\Users\sjodle\AppData\Roaming\npm-cache\_logs\2019-04-23T17_42_11_305Z-debug.log                     

    at ChildProcess.exithandler (child_process.js:281:12)                                                           
    at emitTwo (events.js:126:13)                                                                                   
    at ChildProcess.emit (events.js:214:7)                                                                          
    at maybeClose (internal/child_process.js:915:16)                                                                
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)                                        
(node:10192) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing
 inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (
rejection id: 1)                                                                                                    
(node:10192) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejec
tions that are not handled will terminate the Node.js process with a non-zero exit code.                            

Hai @odik

Kesalahan pertama (node: 10192 Perintah gagal: npm uninstall npm -g): itu terjadi karena npm terdeteksi sebagai global dipasang di folder% appdata% npm, tetapi ini mungkin sisa dan cache node lama. Ini bisa diperbaiki dengan deteksi npm list -g.

Tentang kesalahan kedua bagi saya bahwa kesalahan 'Menolak menghapus' ... terdengar seperti hak istimewa Admin di mana tidak ada otorisasi dalam prosesnya. (Permintaan UAC ditolak?)

Coba jalankan skrip dan terima skalasi hak istimewa Admin, dan jika itu tidak memperbaikinya, beri tahu saya Origin versi node Anda untuk mereproduksi bug.

@dolpsdw Saya cukup yakin itu adalah bagian dari kesalahan yang sama - npm menolak untuk menghapus file karena salah tempat atau sesuatu.

Bagaimanapun, saya tidak lagi memiliki mesin tempat kesalahan terjadi. Saya akan memberi tahu Anda jika saya mengalami masalah yang sama pada penggantinya.

Halo @rsilli
terima kasih telah menyediakan naskahnya. Ini bekerja dengan cukup baik dan memperbarui npm ke versi terbaru sesuai keinginan.
Satu-satunya masalah kecil yang saya hadapi, adalah menjalankan npm list -g --depth=0 untuk mendaftar semua paket node menghasilkan dua instalasi npm.
Jadi saya hanya menambahkan beberapa baris kode untuk menghapus file berganti nama "...- old" dan folder berganti nama "...- old".
Menjalankan npm list -g --depth=0 untuk membuat daftar semua paket node yang menghasilkan satu instalasi npm seperti yang diinginkan.
Ini adalah versi terbaru saya dari skrip Anda:
cd %APPDATA%\nvm\v8.9.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 install -g npm@latest

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

Berikut skrip saya untuk meningkatkan npm di nvm:

https://stackoverflow.com/a/50955293/491553

Saya baru saja melakukannya pada pemasangan baru. Bekerja dengan baik.

@dolpsdw npm-win-upgrade gagal dengan kesalahan yang sama seperti npm install -g npm .
Ada paket lain npm-windows-upgrade , yang juga gagal, tetapi tidak mengatakan mengapa (saya menganggapnya sama).

@ Markus-Hanisch @rsshilli Terima kasih atas skripnya.

Mengambil itu sebagai titik awal, saya ingin menambahkan skrip PowerShell umum berikut, yang memungkinkan Anda untuk mengupgrade NPM terlepas dari versi Node dan lokasi nvm Anda saat ini:

Push-Location (Join-Path (Split-Path (Get-Command nvm).Path) (node --version))
  Move-Item npm npm-old
  Move-Item npm.cmd npm-old.cmd
  Move-Item npx.cmd npx-old.cmd
  Push-Location .\node_modules
    Move-Item npm npm-old
    Push-Location .\npm-old\bin
      node npm-cli.js install -g npm<strong i="8">@latest</strong>
    Pop-Location
    Remove-Item npm-old -Recurse
  Pop-Location
  Remove-Item npx-old.cmd
  Remove-Item npm-old.cmd
  Remove-Item npm-old -Recurse
Pop-Location

(satu-satunya asumsi adalah bahwa nvm menyimpan versinya bersama file exe-nya, dan menamainya sesuai dengan output node --version )

Bacalah utas ini; pada akhirnya, saya sangat beruntung untuk menghapus dan menginstal ulang node.js menggunakan program tambah / hapus.

Masalah telah diperbaiki untuk saya seperti setahun yang lalu dengan mengaktifkan mac;)

@tokopedia

Masalah telah diperbaiki untuk saya seperti setahun yang lalu dengan mengaktifkan mac;)

Dikoreksi:
Masalah telah saya hindari seperti setahun yang lalu dengan mengaktifkan mac;)
: rofl:

@kuncevic , @ Fr0sT-Brutal:
Dan dengan melepaskan kebebasan memilih Anda terkait perangkat keras.
Sama sekali bukan trade-off yang bagus.
Juga, Anda menyerahkan kendali Anda atas perangkat lunak yang berjalan di komputer Anda.
Jika Anda perlu beralih ke suatu tempat, beralihlah ke Linux - itu adalah pilihan yang jauh lebih baik, untuk urusan server.

https://blog.npmjs.org/post/189618601100/binary-planting-with-the-npm-cli

Saya menjatuhkan nvm untuk windows. Setelah 2 tahun, itu masih tidak berfungsi dengan baik bahkan dengan versi node terbaru

Teman-teman, ini adalah masalah npm, bukan masalah NVM4W. Ada utilitas untuk membantu hal ini, tersedia di https://github.com/felixrieseberg/npm-windows-upgrade.

Saya baru saja mengganti nama file ini menjadi "1"
npm1.cmd, npm1, npx1, npx1.cmd

dan lari:
" pembaruan npm1 -g "

Cukup ganti nama file npm1.cmd , itu sudah cukup. Kemudian jalankan pembaruan npm .

Tidak perlu menggunakan npm-windows-upgrade .

@ Coreybutler Saya tidak sepenuhnya yakin akan hal itu. npm-windows-upgrade tidak bekerja untuk saya. Kemudian setelah saya secara manual menghapus skrip tingkat atas (yang sama yang diganti nama orang lain di sini, dan juga yang npx), node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm berfungsi pada awalnya, dan npm install -g npm berfungsi untuk pembaruan selanjutnya tanpa intervensi manual . Sepertinya instalasi npm awal rusak entah bagaimana.

Bahkan jika itu adalah kesalahan npm karena memiliki penginstal yang rusak atau sesuatu yang bukan nvm, satu langkah yang dapat diambil nvm untuk mengatasi masalah ini adalah dengan membersihkan skrip ini sendiri dan meminta pembaruan segera saat membuat lingkungan versi awal. Atau setidaknya dapat memberikan opsi atau perintah untuk melakukannya.

@kuncevic Saran untuk meningkatkan instruksi Anda:

Daripada menyalin file bolak-balik atau mencoba memindahkannya dengan cukup cepat saat proses sedang berjalan, cukup panggil skrip npm secara langsung dengan perintah node.

PowerShell:

node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm

Prompt Perintah:

node "%NVM_SYMLINK%\node_modules\npm\lib\npm.js" install -g npm

Kemudian Anda dapat menghapus file satu kali dan memulai ulang proses tanpa mengembalikannya jika diperlukan.

@ bladeoflight16 Saya mencoba tetapi mendapat kesalahan ini.

C:\Users\woonk>node %NVM_SYMLINK%\node_modules\npm\lib\npm.js install -g npm
internal/modules/cjs/loader.js:796
    throw err;
    ^

Error: Cannot find module 'C:\Program'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
    at Function.Module._load (internal/modules/cjs/loader.js:686:27)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

@ mattdamon8 Maaf. Anda perlu mengutip jalur dalam cmd jika ada spasi. Saya memperbarui posting. Terima kasih.

Mendapatkan Kesalahan ini di Windows dan ingin kembali ke npm yang lebih lama untuk sebuah proyek dan dengan cara yang sangat ringan saya hanya pergi ke lokasi symlink yang sudah terbentuk dari perintah npm dan mengganti nama folder npm di node_modules ke nama versinya sendiri dan kemudian mengunduh versi yang saya butuhkan dan membuat folder bernama npm dan membuang konten yang diunduh di sana yang berfungsi!

@ Coreybutler saran Anda untuk membuat symlink tidak berfungsi karena windows mengeluh bahwa symlink sudah ada. Juga di windows, sulit untuk mengedit symlink dengan cepat. Saya juga perlu beralih di antara 2 versi npm secara teratur. Oleh karena itu saya melakukan ini.

Saya baru saja mengganti nama file ini menjadi "1"
npm1.cmd, npm1, npx1, npx1.cmd
dan lari:
" pembaruan npm1 -g "

Cukup ganti nama file npm1.cmd , itu sudah cukup. Kemudian jalankan pembaruan npm .

Tidak perlu menggunakan npm-windows-upgrade .

@xmedeko @chidveer Mungkin saya melewatkan sesuatu di sini, tetapi bukankah npx npm-windows-upgrade lebih mudah daripada mengganti nama file secara manual sebelum menjalankan npm update ?

@jakobrosenberg npm-windows-upgrade belum bekerja untuk saya. Mungkin saya melakukan sesuatu yang salah, mungkin saya mencoba meningkatkan , atau apa pun. IMO satu file rename lebih sederhana daripada belajar, mengapa npm-windows-upgrade tidak berfungsi dan bagaimana cara memperbaikinya.

Catatan: disarankan untuk menggunakan npm-windows-upgrade secara global, jadi Anda menjalankannya sebagai npm-windows-upgrade , bukan npx npm-windows-upgrade .

@xmedeko tidak akan npx npm-windows-upgrade berjalan secara global kecuali Anda berada di dalam proyek node dengan instalasi lokal npm-windows-upgrade ?

@jakobrosenberg Ya, Anda benar, saya tidak tahu npx berperilaku seperti itu, saya selalu menggunakannya untuk paket proyek lokal saja.

Sebuah skrip batch yang berfungsi dengan baik.
https://gist.github.com/nokidding/aafaf90adc80cbce54b676340817bb13

bekerja seperti pesona
pastikan saja 'set node_path =! PROGRAMFILES! nodejs' menunjuk jalur yang benar dalam kasus Anda
Khususnya jika tidak ada instalasi standar (ekstrak zip)

Masalah yang Sama!
bagaimana saya menyelesaikannya:

  1. Panel Kontrol => Hapus instalan program
  2. Hapus aplikasi NodeJS
  3. Hapus Semua Folder NodeJS di Program Files
  4. Instal Node JS baru

Saya hanya membutuhkan Langkah 4, yaitu Cukup unduh dan instal Node JS baru.
Kemudian berhasil.

Menginstal ulang versi node berfungsi dengan baik, tetapi karena ini adalah masalah yang terkait dengan nvm , mengapa tidak menggunakan kekuatan nvm untuk memperbaiki masalah? Bagi saya, alih-alih melalui program tambah / hapus, itu jauh lebih cepat / sederhana untuk menyimpan semuanya di baris perintah. Sebagai contoh:

nvm uninstall VERSION
nvm install VERSION

Setelah itu tutup dan buka kembali shellnya. Cepat dan mudah (setidaknya sekarang setelah Anda tahu). 😄

Jika Anda memiliki masalah (mis. nvm menunjukkan bahwa versi telah diinstal), periksa apakah folder yang terkait dengan versi tersebut masih ada (mis. %NVM_HOME%\VERSION ) dan bahwa file node.exe masih belum ada. Jika masih ada, pastikan Anda belum memiliki aplikasi yang berpotensi menjalankan node (misalnya dalam kasus saya IDE saya menjalankannya, jadi saya menutupnya dan dapat menghapus sepenuhnya).

EDIT: ⚠️ Saya kira solusi sederhana ini hadir dengan satu efek samping penting: Ini akan menghapus paket yang diinstal secara global ... hmm ... mungkin masih lebih sederhana untuk menginstal ulang secara manual. Berhati-hatilah! ⚠️

Apakah halaman ini membantu?
0 / 5 - 0 peringkat