Nodejs + npm,在ntfs分区上安装模块
安装npm模块时遇到问题。 NodeJS安装在Windows主机上的Virtual Box上运行的Ubuntu 11.10上。 我的项目文件在NTFS分区(我必须与他们共享Windows)。 当我尝试安装一些npm模块时,我得到一个错误,并没有安装模块。 当npm试图创build符号链接时,我发现了这个问题。
可能你不能在NTFS分区上创build符号链接,当我在Linux内部安装模块文件系统时,一切正常。
我怎样才能解决这个问题? 我不想手动解决依赖关系:/
从版本1.2.21开始,npm为install
命令提供了一个新的选项。 --no-bin-links
您可以使用if来安装特定的节点模块
npm install express --no-bin-links
也为package.json安装
npm install --no-bin-links
使用这个选项,我可以在虚拟机内的共享forlder中安装很多npm模块(Ubuntu guest,Windows主机)
将选项添加到npm代码的提交是b4c58617039c21c10889a9869f8e86a23e17d3a0
试试这个 – http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/
为我工作!
基本上你设置一个参数
VBoxManage setextradata YOURVMNAME VBoxInternal2 / SharedFoldersEnableSymlinksCreate / YOURSHAREFOLDERNAME 1
然后以pipe理员身份运行虚拟机….
Symlink权限或--no-bin-links
不适用于我们。 相反,我们select将我们的node_modules
从/vagrant
共享中node_modules
。 我们创build了一个从/vagrant/node_modules
到/tmp/node_modules
的符号链接。 只有当您的node_modules
不在版本控制中时才能执行此操作 。 先检查一下 !
另见http://kmile.nl/post/73956428426/npm-vagrant-and-symlinks-on-windows
我很确定符号链接不能在共享驱动器(“共享文件夹”)上创build。 Windows主机和Linux客户机更是不可能。
主机不知道客人的文件系统。 访客机器是主机的黑匣子。 当主机不知道这个/etc
是什么的时候,你不能对主机说“那么这个链接到/etc/...
” 。
所以总之:不幸的是没有。
在一些更详细的信息:
如果我错了,我会很开心的! 这是我的发展过程中的一大痛苦。
我尝试了很多select。 默认情况下, “共享文件夹”使用的文件系统是vboxsf
,与samba
(Windows的默认networking共享协议)不同的地方如此:
- 我尝试使用本地Windowsnetworking共享 ,然后将guest虚拟机作为guest虚拟机和主机位于同一个networking中。 问题仍然存在 。
- 我尝试在Windows (Hanewin NFS服务器) 上运行NFS服务器以及SFU / SUA(Windows Services for UNIX),但是这有GIT锁问题。 也许还有其他问题 – 前一段时间,我不清楚
- 我试着相反:在虚拟机上共享一个目录到Windows。 但是,这是愚蠢的,因为所有的文件将在虚拟框中,并在Windows上访问速度相当慢
- 我是愚蠢的,我虽然“ 让我们在Windows和Linux上挂载一个虚拟驱动器” – 不要尝试这个,破坏虚拟磁盘。 我应该知道的东西。
除了samba
和nfs
以外,可能还有一个networking共享协议,当试图创build“symlink”时,它们可能会复制这些文件? 我真的不知道。
然而,我还没有find一个,而且“locking”似乎是文件系统本身的任务,所以我怀疑任何networking协议(除非有专门的lockingregistry)可以做到这一点。
对于任何人在尝试npm install --no-bin-links
后仍然遇到这个问题。
当我在使用VirtualBox的Windows 7主机上的Laravel Homestead Vagrant框中运行npm install
时遇到类似的问题时,我无法获得上述任何解决scheme。 来宾框有一个到Windows文件系统的映射目录。
该问题导致各种错误消息和安装包失败。 与这个问题最相关的是npm ERR! UNKNOWN, symlink '<some filename>'
npm ERR! UNKNOWN, symlink '<some filename>'
。
为了解决这个问题,我能够成功地在Windows上的Git bash命令行上运行npm install
,而不是在客户端Linux上运行bash。
要做到这一点,你需要安装Git for Windows和NodeJS(都在你的Windows机器上)。
例如
- 安装巧克力https://chocolatey.org/
-
choco install nodejs.install
-
choco install git.install
- 运行
C:\Program Files (x86)\Git\Git Bash.vbs
- 在Git Bash命令行中,将目录切换到package.json文件的位置,例如
cd /c/projects/projectname
- 运行
npm install
一切似乎安装成功。
如果你不使用本地模块(从C / C ++编译),你可以在你的Ubuntu VM上使用npm,并将node_modules文件夹复制到你的windows驱动器。
fsutil行为集SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
这个命令在Windows上启用符号链接。 为了更好地解释结尾处的神秘命令: 如何克服“由于禁用types而不能遵循的符号链接”。 在Server 2008上获取符号链接的目标时出错?
综上所述
fsutil行为集SymlinkEvaluation(即L2L,L2R,R2L和R2R)的行为代码表示如下:
L代表“本地”,R代表“远程”(谁会变成?)FIRST L或R – 在2之前 – 指的是链路本身(相对于其目标)相对于机器的位置访问链接。 SECOND L或R – 在2之后 – 是指链路目标相对于LINK本身所在的机器的位置。