2014-02-08 8 views
12

Я продолжал сталкиваться с этой ошибкой при установке Bower через NPM на машине под управлением Windows 7 с точной коробкой Ubuntu на Vagrant. Я пробовал все возможные комбинации команд и всегда получал одни и те же или очень похожие ошибкиКакие разрешения необходимы для установки Bower on Vagrant в Windows?

Установки локально, на глобальном уровне, с Судо, без Суда и т.д.

... 
npm ERR! Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js' 
npm ERR! { [Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js'] 
npm ERR! errno: 50, 
npm ERR! code: 'EPERM', 
npm ERR! path: '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 
npm ERR! System Linux 3.2.0-23-generic-pae 
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "-g" "bower" "--no-bin-links" 
npm ERR! cwd /home/vagrant 
npm ERR! node -v v0.10.25 
npm ERR! npm -v 1.3.24 
npm ERR! path /home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js 
npm ERR! code EPERM 
npm ERR! errno 50 
npm ERR! stack Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js' 
... 

EDIT: Как и мой ответ ниже, пожалуйста обратите внимание на каталог файлов + ограничение размера файла при использовании Windows (на 260 символов я считаю).

Мне пришлось установить бродягу в папку непосредственно на моем диске c: /, чтобы преодолеть это ограничение, поскольку некоторые пакеты в итоге имеют вложенные зависимости в результате чего этот предел будет превышен. Моя проблема была с хрюкать-вно-менее

ответ

14

Само ответ, как я не мог найти решение где-либо на StackOverflow

В конце концов я получил его на работу через изменения в корневой пользователь через su root и пытается установить глобально еще раз. По-видимому, просто использовать sudo было недостаточно.

Так он стал

[email protected]: npm install -g bower --no-bin-links

EDIT: Как это решение, пожалуйста, обратите внимание на каталог файлов + файл ограничения размера при использовании ОС Windows (260 символов я считаю)

Я имел для запуска экземпляра бродяг в папке непосредственно на моем диске c: /, чтобы преодолеть это ограничение, поскольку некоторые пакеты в конечном итоге имеют вложенные зависимости, заставляя этот предел превышать. Моя проблема была связана с grunt-contrib-less

EDIT 2: Повторяя эту проблему снова и снова, я добавлю немного больше информации для людей о модулях узлов и бродячих под Windows.

Теперь я преодолеваю ограничение на пути к файлу путем установки каких-либо длинных цепочек зависимостей, которые терпят неудачу из-за длины пути (обычно EPERM). Я добавляю один из пакетов в цепочке в свой собственный package.json. Это означает, что цепочка длинных требований разделяется, поскольку npm не переустанавливает пакет глубже в дереве, если он уже установлен.

Просто убедитесь, что вам нужна версия, которая действительна для строки версии для модуля.

Порядок зависимостей в package.json не имеет значения, зависимости разрешаются, прежде чем что-либо установлен

+0

Спасибо за это, решение всех моих проблем перемещало папку виртуальной машины в корень жесткого диска, чтобы избежать длинных имен файлов. Можно было бы подумать, что ребята из NPM, по крайней мере, подтвердят существование Windows и напишутся подробные сообщения об ошибках, но nope – Swader

+0

Ошибка в Windows связана с длинными путями. Лучшим решением было бы переместить папку на более низкий уровень. – jordiburgos

+0

Это не всегда, но да, это первое, что вы, вероятно, должны проверить с ошибкой EPERM или EACCESS (я думаю) на Windows – Sam

3

Один из OPS парней (vagrant and node.js quick tip) нашел решение для этой проблемы. В основном вы должны иметь следующий код в Бродячем файле:

config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"] 

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

sudo npm install --no-bin-link 

Это было полезно для меня, когда я установил экспресс модуль.

+0

. Я на самом деле думаю, что это было связано с ошибками разрешений, но я до сих пор не смог понять почему. Но спасибо, это полезно – Sam

+0

После добавления, что я получаю сообщение об ошибке: * Следующие настройки не должны существовать: настроить –

+0

@FelixEve Вам необходимо обернуть его этим: '' 'config.vm.provider" virtualbox "do | v | [config.vm.customize здесь в новой строке с отступом без скобок] end''' – chrki

1

С Vagrant 1.5 на Windows теперь вы можете использовать rsync или smb папки, которые не будут иметь эту проблему.

1

Чтобы обойти ограничение длины файла в 260 символов в окнах, которое, по-видимому, превосходит слишком часто, вы можете использовать команду npm link.

Это позволит вам использовать node_modules локально для вашего проекта. Если вы запустите его на гостевой машине, он установит их на глобальном уровне на гостевой машине, а затем создаст символическую ссылку в вашей папке node_modules. Таким образом, только символическая ссылка разделяется на хост-машину Windows, а ограничение длины файла 260 не превышено.

Более подробно об этом читайте в этом блоге here.

Смежные вопросы