问题描述
安装npm模块时出现问题。 NodeJS安装在Windows主机上的Virtual Box上运行的Ubuntu 11.10上。我的项目文件位于NTFS分区上(我必须与Windows共享它们)。当我尝试安装一些npm模块时,出现错误,并且未安装模块。我发现npm尝试创建符号链接时会发生此问题。
可能无法在NTFS分区上创建符号链接,当我安装模块”inside” Linux文件系统时,一切正常。
我怎样才能解决这个问题?我不想手动解决依赖关系:/
最佳方法
从1.2.21版开始,npm为install
命令提供了一个新选项。 --no-bin-links
您可以使用if安装特定的节点模块
npm install express --no-bin-links
以及package.json安装
npm install --no-bin-links
通过此选项,我能够在虚拟机(Ubuntu guest,Windows Host)中的共享卷中安装许多npm模块而不会出现问题。
将选项添加到npm代码的提交是b4c58617039c21c10889a9869f8e86a23e17d3a0
次佳方法
试试这个-http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/
为我工作!
基本上你设置一个参数
VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1
然后以管理员身份运行VM。
第三种方法
Symlink权限或--no-bin-links
对我们不起作用。相反,我们选择将node_modules
从/vagrant
共享中移出。我们创建了一个从/vagrant/node_modules
到/tmp/node_modules
的符号链接。仅当node_modules
不在版本控制中时,才可以执行此操作。首先检查this!
另请参见http://kmile.nl/post/73956428426/npm-vagrant-and-symlinks-on-windows
第四种方法
我很确定无法在共享驱动器(“shared folder”)上创建符号链接。对于Windows主机和Linux来宾来说,这甚至是不可能的。
主机不知道客户机的文件系统。来宾计算机是主机的黑盒。当主机不知道该/etc
在哪里时,您不能对主机说“好吧,它链接到/etc/...
”。
简而言之:不幸的是,没有。
更详细地讲:
如果我错了,我会很高兴!这是我开发过程中的主要痛苦。
我尝试了很多选择。默认情况下,”shared folders”使用的文件系统是vboxsf
,如果与samba
(Windows的默认网络共享协议)不同,则该文件系统如下:
-
我尝试使用本机Windows网络共享,然后将网络驱动器安装在来宾中,因为来宾和主机位于同一网络上。问题仍然存在。
-
我尝试在Windows(Hanewin NFS服务器)和SFU /SUA(用于UNIX的Windows服务)上运行NFS服务器,但这存在GIT锁问题。可能还有其他问题-不久前,我不清楚
-
我尝试了相反的操作:将虚拟机上的目录共享到Windows。但这很愚蠢,因为所有文件都将放在虚拟框上,并且在Windows上的访问速度确实很慢
-
我当时很愚蠢,尽管“好吧,让我们在Windows和Linux上都安装一个虚拟驱动器”-不要尝试这样做,破坏虚拟磁盘。我应该知道的东西。
除了samba
和nfs
之外,可能还有其他网络共享协议,它们可能会在尝试创建”symlink”时复制文件吗?我真的不知道
但是我还没有找到,而且”locking”似乎是file-system本身的任务,因此我怀疑任何网络协议(除非具有用于锁定的某种专用注册表)都可以做到这一点。