Nvm-windows: Установка nvm завершается неудачно: "Имя файла или расширение слишком длинное"

Созданный на 21 июл. 2017  ·  25Комментарии  ·  Источник: coreybutler/nvm-windows

Моя среда

Windows 8

Я использую версию NVM4W:

1.1.5

Моя проблема связана с (отметьте только те, которые применимы):

  • [] settings.txt
  • [] поддержка прокси (вы пробовали версию 1.1.0+?)
  • [] Поддержка 32- или 64-разрядной версии (Вы пробовали версию 1.1.3+?)
  • [] Экранирование персонажа (Вы пробовали версию 1.1.6+?)
  • [x] Стандартная оболочка (терминал / PowerShell)
  • [] Нестандартное окружение оболочки (Cmder, Hyper, Cygwin, git)

Ожидаемое поведение

Установить версию узла 8.2.1

Фактическое поведение

Сбой с ошибкой The filename or extension is too long

Шаги по воспроизведению проблемы:

λ nvm install 8.2.1
Downloading node.js version 8.2.1 (64-bit)...
Complete
Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...2017/07/21 09:02:31 mkdir C:\Users\suhas.karanth.RB\AppData\Roaming\nvm\temp\nvm-npm\npm-5.3.0\node_modules\libnpx\node_modules\yargs\node_modules\read-pkg-up\node_modules\read-pkg\node_modules\load-json-file\node_modules\parse-json\node_modules\error-ex\node_modules\is-arrayish: The filename or extension is too long.

Хотя это _is_ проблема, я сомневаюсь, что есть прямой способ исправить это. Тем не менее, создаю эту проблему, чтобы рассказать, как я ее обошел и как ее можно было бы избежать.

Я установил последнюю предварительную версию nvm ( v1.1.6 ), но на этот раз установил ее на C:\nvm\ чтобы сохранить длину пути. После этого удалось успешно установить узел v8.2.1 . Как вы думаете, имеет ли смысл устанавливать nvm по этому пути по умолчанию?

upstream-bug

Самый полезный комментарий

Если вы устанавливаете последнюю версию (1.1.6) и вместо C:/Users/<username>/AppData/Roaming/nvm выбираете C:/nvm в качестве папки установки, все должно работать. У меня не было проблем с установкой 8.4.0 :)

Для меня использование nvm root для изменения пути к nvm не помогло, я получил странные сообщения об ошибках. Он не копировал nvm <commands> и даже node перестал работать.

Клонирование npm вручную, предложенное

Все 25 Комментарий

Что-то не так с этой установкой ... У вас случайно не были установлены две версии NVM одновременно?

Возможно, сейчас уже слишком поздно, но что выводит echo %NVM_SYMLINK% ?

Нет. На момент возникновения ошибки у меня не было установлено 2 версии NVM.

Возможно, сейчас уже слишком поздно, но что выводит echo %NVM_SYMLINK% ?

Собственно, еще не поздно. У меня был открыт терминал, в котором все еще была старая среда.

λ where nvm
C:\Users\suhas.karanth.RB\AppData\Roaming\nvm\nvm.exe

λ echo %NVM_SYMLINK%
C:\Program Files\nodejs

Кроме того, я ранее устанавливал и использовал несколько версий узла через NVM:

λ nvm list

  * 8.1.2 (Currently using 64-bit executable)
    8.1.1
    8.1.0
    8.0.0
    6.10.3
    6.10.0
    5.12.0
    4.8.0
    4.2.6

У меня такая же проблема.
Windows 10
Оболочка cmder
NVM 1.1.5

Это происходит с узлами 8.2.0 и 8.2.1
8.1.4 и 8.1.3 работают нормально.

$ nvm install 8.2.0
Downloading node.js version 8.2.0 (64-bit)...
Complete
Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...2017/07/22 00:15:41 mkdir C:\Users\Christopher\AppData\Roaming\nvm\temp\nvm-npm\npm-5.3.0\node_modules\libnpx\node_modules\yargs\node_modules\read-pkg-up\node_modules\read-pkg\node_modules\load-json-file\node_modules\parse-json\node_modules\error-ex\node_modules\is-arrayish: The filename or extension is too long.

Интересно, стоит ли нам заняться этим с помощью npm upstream ..
@clowenhg Если вы установите nvm непосредственно в C:\nvm , проблема будет решена, но существующие установки узла больше не будут распознаваться. Я переместил папки с несколькими узлами в C:\nvm и смог увидеть их в списке, но так и не смог проверить что-либо из этого. Благодаря обновлению Windows и циклу загрузки.

Это, вероятно, сработает, но похоже на временную работу, пока следующая вещь не захочет углубиться в еще один каталог. Так что да, поднять это как проблему для НПМ, вероятно, было бы хорошим решением.

Поскольку 8 еще не является окончательной версией LTS, я сейчас просто возвращаюсь к 8.1.4.

Похоже, что есть ряд проблем с новыми версиями npm, особенно с теми, которые включают поддержку npx. Я добавил поддержку npx в главную ветку и выпущу ее, когда версия 1.1.6 станет официальной (в настоящее время тестируется). Тем не мение; даже в этой ветке npx все равно не работает (он также не работает через автономный установщик Windows Node без NVM4W).

Я считаю, что это проблема npm, а не NVM4W. Я закрываю вопрос и отмечаю его как проблему апстрима.

@coreybutler Небольшое уточнение, если вы не против. Почему вам пришлось вносить изменения в поддержку npx? Даже с узлом v8.1 npx был доступен и пригоден для использования, хотя и с ошибками в Windows. Но nvm не должен ничего делать для этого.

Node 8.1 _не_ поставлялся с поддержкой npx. Если он у вас в 8.1, вы должны запустить npm install -g npm где-нибудь в строке, чтобы обновить npm. Команда npx была добавлена ​​в npm v5.3.0, и первой версией Node, поставляемой с npm 5.3.0, была версия 8.2.1. Для получения более подробной информации см. # 288.

Ага .. Вы, наверное, правы. Я помню, как обновлял npm.

У меня была такая же проблема, у меня есть решение:

  1. установите 8.2.1, что вам не удастся, это нормально.
  2. установите v6.11.2 и скопируйте 2 файла (npm и npm.cmd) из /c:/[usernamepting/AppData/Roaming/nvm/v6.11.2 в папку v8.2.1
  3. в папке v8.2.1 сделать git clone https://github.com/npm/npm.git

тогда тебе должно быть хорошо

Спасибо @michaelkdh У меня работает. 👍
Немного по-другому было то, что когда я клонировал «npm.git», он создал папку «npm». И мне пришлось переместить папку «npm» в «node_modules».

@ gblue1223 то же самое, просто нужен npm. ура,

@coreybutler В зависимости от проблемы, которую вы связали, вы можете переопределить пути для установки.

Если вы устанавливаете последнюю версию (1.1.6) и вместо C:/Users/<username>/AppData/Roaming/nvm выбираете C:/nvm в качестве папки установки, все должно работать. У меня не было проблем с установкой 8.4.0 :)

Для меня использование nvm root для изменения пути к nvm не помогло, я получил странные сообщения об ошибках. Он не копировал nvm <commands> и даже node перестал работать.

Клонирование npm вручную, предложенное

@ peterbakonyi05 Переопределять папку nvm только для того, чтобы ее установить, все еще хакерски.

@Sieabah Я согласен, вся проблема странная. Однако я думаю, что это все же лучше, чем два других предложенных решения (на самом деле ни одно из них не сработало для меня)

Для тех, кто все еще сталкивается с этим, может ли кто-нибудь предоставить шаги для воссоздания этой ошибки? Или, может быть, скринкаст? Мне еще предстоит увидеть это в действии.

Кроме того, я заметил, что многие люди копируют / вставляют со своих терминалов ... и синтаксис типа /c/whatever , лямбды и т. Д. Продолжает появляться .... все это указывает на то, что люди используют такие вещи, как Cygwin , git shells, cmder и т. д. Обратите внимание, что эти оболочки _не всегда соответствуют стандартам платформы Windows_, и они _do_ влияют на то, как считываются пути. Есть несколько других проблем, связанных с этим, поэтому попробуйте все в стандартном терминале перед публикацией, чтобы убедиться, что это проблема NVM4W, а не проблема оболочки терминала.

@coreybutler Вот и все, с cmd.exe

C: \ Users \ Christopher> nvm install 8.4.0
Скачивание node.js версии 8.4.0 (64-бит) ...
Завершить
Создание C: \ Users \ Christopher \ AppDataRoamingnvm \ temp

Скачивание npm версии 5.3.0 ... Завершено
Установка npm v5.3.0 ... 2017/09/05 16:50:14 mkdir C: \ Users \ Christopher \ AppDataRoamingnvm \ tempnvm-npmnpm-5.3.0node_modules \ libnpxnode_modules \ yargsnode_modules \ read-pkg-upnode_modules \ read-pkgnode load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish: слишком длинное имя файла или расширение.

C: \ Users \ Christopher> где nvm
C: \ Users \ Christopher \ AppDataRoamingnvmnvm.exe

C: \ Users \ Christopher> nvm install 8.4.0
Скачивание node.js версии 8.4.0 (64-бит) ...
Завершить
Создание C: \ Users \ Christopher \ AppDataRoamingnvm \ temp

Скачивание npm версии 5.3.0 ... Завершено
Установка npm v5.3.0 ... 2017/09/05 16:50:14 mkdir C: \ Users \ Christopher \ AppDataRoamingnvm \ tempnvm-npmnpm-5.3.0node_modules \ libnpxnode_modules \ yargsnode_modules \ read-pkg-upnode_modules \ read-pkgnode load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish: слишком длинное имя файла или расширение.

C: \ Users \ Christopher> где узел
C: \ Program Filesnodejsnode.exe

C: \ Users \ Christopher> где npm
C: \ Program Filesnodejsnpm
C: \ Program Filesnodejsnpm.cmd

Я также использую nvm версии 1.1.5, если это имеет значение (может быть, вы используете 1.1.6?)

Я могу подтвердить, что обновление до 1.1.6 устраняет эту проблему. Имеет смысл, поскольку похоже, что некоторые средства управления путями к файлам теперь используют собственные библиотеки Go.

Это также означало бы, что ошибка пути к файлу была в nvm, а не в самой npm. Любая ошибка, обнаруженная в npm, может потребовать повторного просмотра.

Спасибо @ computerquip-streamlabs. Я получил эту проблему и решил, обновив nvm с помощью,

scoop install [email protected]

Затем я мог установить узел 8.7.0 с помощью nvm.

При установке nvm 1.1.6 исправлена ​​ошибка «Установка npm: слишком длинное имя файла или расширение»

От: C: \ Users \ [имя пользователя] \ AppDataRoamingnvm

  1. Изменить файл settings.txt
root: C:\nvm 
path: C:\Program Files\nodejs 
arch: 64 
proxy: none
  1. Скопируйте два файла elevate.cmd и elevate.vbs в: C: nvm

Тогда это сработало для меня!

Повторное открытие, поскольку несколько пользователей все еще сталкиваются с этим.

FWIW, я использую Windows 10, я включил длинные пути к файлам, но все еще не смог установить версии узлов выше 6.x ... из-за проблемы с длинным путем к файлу в npm v 5.6 при обновлении до nvm 1.1.6 исправил проблему для меня.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги