Windows 8
1.1.5
Установить версию узла 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 по этому пути по умолчанию?
Что-то не так с этой установкой ... У вас случайно не были установлены две версии 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.
У меня была такая же проблема, у меня есть решение:
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
root: C:\nvm
path: C:\Program Files\nodejs
arch: 64
proxy: none
elevate.cmd
и elevate.vbs
в: C: nvmТогда это сработало для меня!
Повторное открытие, поскольку несколько пользователей все еще сталкиваются с этим.
FWIW, я использую Windows 10, я включил длинные пути к файлам, но все еще не смог установить версии узлов выше 6.x ... из-за проблемы с длинным путем к файлу в npm v 5.6 при обновлении до nvm 1.1.6 исправил проблему для меня.
Самый полезный комментарий
Если вы устанавливаете последнюю версию (1.1.6) и вместо
C:/Users/<username>/AppData/Roaming/nvm
выбираетеC:/nvm
в качестве папки установки, все должно работать. У меня не было проблем с установкой8.4.0
:)Для меня использование
nvm root
для изменения пути кnvm
не помогло, я получил странные сообщения об ошибках. Он не копировалnvm <commands>
и дажеnode
перестал работать.Клонирование
npm
вручную, предложенное