«npm install -g npm @ latest» повредил мою установку npm - Windows 8.1 - PullRequest
1 голос
/ 18 октября 2019

В прошлом месяце я установил узел 10.16.3 LTS и, поскольку у него не было последней версии npm, я обновил его, используя это официальное руководство: https://docs.npmjs.com/try-the-latest-stable-version-of-npm (вариант 2):

  1. удалено % ProgramFiles% \ nodejs \ npm и % ProgramFiles% \ nodejs \ npm.cmd
  2. перемещено файл npmrc из % ProgramFiles% \ nodejs \ node_modules \ npm до % appdata% \ npm \ node_modules \ npm

Сегодня, после того как я установил 'create-реагировать-приложение', npm показал мне сообщение о том, что доступна новая минорная версия npm 6.11.3 -> 6.12.0 и я могу ее обновить.
Я запустил 'npm install -g npm @ latest', но это просто выдало мне кучу ошибок:

C:\Users\Wladyslaw\AppData\Roaming\npm\npx -> C:\Users\Wladyslaw\AppData\Roaming\npm\node_modules\npm\bin\npx-cli.js
npm ERR! code EPERM
npm ERR! syscall open
npm ERR! path C:\Users\Wladyslaw\AppData\Roaming\npm\npm
npm ERR! errno -4048
npm ERR! Error: EPERM: operation not permitted, open 'C:\Users\Wladyslaw\AppData\Roaming\npm\npm'
npm ERR!  { [Error: EPERM: operation not permitted, open 'C:\Users\Wladyslaw\AppData\Roaming\npm\npm']
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Users\Wladyslaw\AppData\Roaming\npm\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Users\\Wladyslaw\\AppData\\Roaming\\npm\\npm' },
npm ERR!   stack:
npm ERR!    'Error: EPERM: operation not permitted, open \'C:\\Users\\Wladyslaw\\AppData\\Roaming\\npm\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Users\\Wladyslaw\\AppData\\Roaming\\npm\\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.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Wladyslaw\AppData\Roaming\npm-cache\_logs\2019-10-17T19_35_58_442Z-debug.log

Теперь я даже не могу запустить 'npm -v', он каким-то образом удалил мой npmпапку и просто показывает мне это сообщение:

bash: /c/Users/Wladyslaw/AppData/Roaming/npm/npm: No such file or directory

Есть ли способ восстановить поврежденную установку npm без переустановки всего Node.js?
Спасибо

1 Ответ

0 голосов
/ 18 октября 2019

Решение

Хотя можно попытаться «исправить» ваши настройки, на самом деле это того не стоит, однако вы не хотите терять установленные пакеты, как я полагаю. Итак:

  • Создать временную папку C:\Users\Wladyslaw\AppData\Roaming\npm.temp
  • Переместить C:\Users\Wladyslaw\AppData\Roaming\npm\node_modules в <temp_folder>
  • Переместить C:\Users\Wladyslaw\AppData\Roaming\npm\*.bat в <temp_folder>
  • Переместить C:\Users\Wladyslaw\AppData\Roaming\npm\*.cmd в <temp_folder>
  • Установить узел из установщика (https://nodejs.org/en/download/)
  • Переместить назад каждую папку и файл из <temp_folder> в C:\Users\Wladyslaw\AppData\Roaming\npm
    • Не перезаписывайте файлы!

Скрипты Powershell

Не тестировали его, так как у меня нетрадиционная установка с использованием nvm-windows. Но они должны делать то, что я написал выше, поэтому здесь идет речь:

backup.ps1

pushd $Env:AppData
$NF = 'npm.temp'
md $NF -ea SilentlyContinue | Out-Null # Make folder, if exists, don't cry about it
mv npm/node_modules $NF                # Back up node modules
$GlobalPacks = ls npm | ? Name -Match '\.(cmd|bat)$|\.npmrc' # Only select bat / cmd files or your .npmrc file
cp $GlobalPacks $NF
Write-Host -f 2 '[+] Backed up data to $NF'

Теперь установите узел.js с веб-сайта, затем запустите:

restore.ps1

pushd $Env:AppData
$NF = 'npm.temp'
if (!(Test-Path $NF)) {
  Write-Host -f Red "[-] Could not find backup folder, are you sure you backed up?"
  exit
}
cp npm/node_modules $NF -re -fo   # Overwrite backup modules with new files
if (!$?) {Write-Host -f yellow "[!] Something failed";exit}
rm npm/node_modules
mv "$NF/node_modules" npm         # Bring all node_modules to npm
ls $NF -File | % {mv $_ npm}      # Move global package scripts
Write-Host -f 2 '[+] Restored from [$NF] -> [$pwd\npm]'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...