Nodejs + npm, установка модулей на раздел ntfs - PullRequest
35 голосов
/ 22 ноября 2011

У меня проблема при установке модулей npm.NodeJS установлен в Ubuntu 11.10, работающем в Virtual Box на хосте Windows.Мои файлы проекта находятся в разделе NTFS (я должен поделиться ими с Windows).Когда я пытаюсь установить какой-либо модуль npm, я получаю сообщение об ошибке, и модуль не устанавливается.Я обнаружил, что проблема возникает, когда npm пытается создать символические ссылки.

Возможно, вы не можете создать символические ссылки на разделе NTFS, когда я устанавливаю модуль "внутри" файловой системы Linux, все работает нормально.

Как я могу это исправить?Я не хочу разрешать зависимости вручную: /

Ответы [ 7 ]

55 голосов
/ 01 марта 2013

Начиная с версии 1.2.21, в npm появилась новая опция для команды install. --no-bin-links

Вы можете использовать, если для установки конкретного узла модуля

npm install express --no-bin-links

, а также для package.json установить

npm install --no-bin-links

Благодаря этой опции я смог без проблем установить множество модулей npm в свой общий forlder внутри виртуальной машины (Ubuntu guest, Windows Host)

Коммит, где опция была добавлена ​​в код npm: b4c58617039c21c10889a9869f8e86a23e17d3a0

5 голосов
/ 20 января 2014

Разрешения Symlink или --no-bin-links у нас не работают.Вместо этого мы решили убрать нашу node_modules с /vagrant доли.Мы создали символическую ссылку от /vagrant/node_modules до /tmp/node_modules. Вы можете сделать это, только если ваш node_modules не находится в режиме управления версиями .Проверьте этот первый!

Также см. http://kmile.nl/post/73956428426/npm-vagrant-and-symlinks-on-windows

5 голосов
/ 04 марта 2013

Попробуйте это - http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/

У меня работает!

В основном вы устанавливаете параметр

VBoxManage setextradata YOURVMNAME VBoxInternal2 / SharedFoldersEnableSymlinksCreate / YOURSHAREFOLDERNAME 1

А затем запустить виртуальную машину от имени администратора ....

3 голосов
/ 30 сентября 2012

Я почти уверен, что символические ссылки не могут быть созданы на общем диске («общая папка»).Еще более невозможно с хост-машиной Windows и гостем Linux.

Машины host не знают о файловой системе guest .Гостевая машина - это черный ящик для хоста.Вы не можете сказать хосту "Ну, это ссылка на /etc/..." , когда хост не знает, где находится /etc:).

Так что вкоротко: к сожалению нет.


Более подробно:

Я был бы очень счастлив, если я ошибаюсь!Это большая боль в моем процессе разработки.

Я пробовал так много вариантов.По умолчанию файловая система, используемая «общими папками» , равна vboxsf, что-то, если не то же самое, что samba (протокол сетевого обмена по умолчанию для windows), поэтому:

  1. Я попытался использовать собственный сетевой ресурс Windows * , а затем подключить сетевой диск в гостевой системе, так как гостевая и хост-компьютеры находятся в одной сети. Проблема все еще была .
  2. Я пытался запустить NFS-сервер на Windows (Hanewin NFS Server) вместе с SFU / SUA (Windows Services для UNIX), но этоесть проблемы с GIT-замками .Вероятно, и другие проблемы - это было некоторое время назад, и я точно не помню
  3. Я попробовал обратное: разделение каталога на виртуальной машине с окнами.Но это глупо, так как все файлы будут в виртуальной коробке и очень медленно, чтобы получить доступ к Windows
  4. Я был глуп, и я хотя "" 1049* Хорошо, давайте смонтируем виртуальный диск на Windows и Linux " - не пытайтесь это испортить, виртуальный диск.Что-то, что я должен был знать.

Может ли существовать протокол общего доступа к сети, отличный от samba и nfs, который, возможно, будет копировать файлы при попытке создания "символической ссылки"?Я действительно не знаю.

Однако я еще не нашел, а также «блокировка» , кажется, является задачей самой файловой системы, поэтому я сомневаюсь в любом сетевом протоколе.(если только у вас нет выделенного реестра для блокировок).

1 голос
/ 07 июля 2015

Для тех, кто все еще испытывает эту проблему после попытки npm install --no-bin-links.

Я не смог заставить работать ни одно из перечисленных выше решений, когда натолкнулся на аналогичную проблему с npm install на компьютере Laravel Homestead Vagrant на хосте Windows 7 с использованием VirtualBox. Гостевой ящик имеет сопоставленный каталог с файловой системой Windows.

Проблема была вызвана различными сообщениями об ошибках и сбоями установки пакетов. Наиболее актуальным для вопроса был npm ERR! UNKNOWN, symlink '<some filename>'.

Чтобы исправить это, я смог успешно запустить npm install в командной строке Git bash в Windows, а не bash в гостевом Linux.

Для этого вам нужно установить Git для Windows и NodeJS (оба на вашем компьютере с Windows).

, например

  1. Установить Шоколад https://chocolatey.org/
  2. choco install nodejs.install
  3. choco install git.install
  4. Пробег C:\Program Files (x86)\Git\Git Bash.vbs
  5. В командной строке Git Bash измените каталог на местоположение вашего файла package.json, например. cd /c/projects/projectname
  6. Выполнить npm install

Похоже, все успешно установлено.

0 голосов
/ 03 февраля 2016

fsutil поведенческий набор SymlinkEvaluation L2L: 1 R2R: 1 L2R: 1 R2L: 1

эта команда включает символические ссылки в окнах.для лучшего объяснения загадочных команд при последнем посещении: Как мне преодолеть «Символическая ссылка не может быть пройдена, потому что ее тип отключен».ошибка при получении цели символической ссылки на Server 2008?

в итоге

Коды поведения для набора параметров поведения fsutil SymlinkEvaluation - а именно L2L, L2R, R2L и R2R - означаютследующее:

L означает «Локальный», а R - «Удаленный» (кто бы мог подумать?). ПЕРВЫЙ L или R - перед 2 - относится к местоположению самой ссылки (какв противоположность своей цели) относительно машины, ДОСТУПНОЙ по ссылке.ВТОРОЙ L или R - после 2 - относится к местоположению цели ссылки относительно машины, на которой расположена сама ССЫЛКА.

0 голосов
/ 17 апреля 2012

Если вы не используете собственные модули (скомпилированные из C / C ++), вы можете просто использовать npm на своей виртуальной машине Ubuntu и скопировать папку node_modules на ваш диск Windows.

...