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共享协议)不同的地方如此:

  1. 我尝试使用本地Windowsnetworking共享 ,然后将guest虚拟机作为guest虚拟机和主机位于同一个networking中。 问题仍然存在
  2. 我尝试在Windows (Hanewin NFS服务器) 上运行NFS服务器以及SFU / SUA(Windows Services for UNIX),但是这有GIT锁问题。 也许还有其他问题 – 前一段时间,我不清楚
  3. 我试着相反:在虚拟机上共享一个目录到Windows。 但是,这是愚蠢的,因为所有的文件将在虚拟框中,在Windows上访问速度相当慢
  4. 我是愚蠢的,我虽然“ 让我们在Windows和Linux上挂载一个虚拟驱动器” – 不要尝试这个,破坏虚拟磁盘。 我应该知道的东西。

除了sambanfs以外,可能还有一个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机器上)。

例如

  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

一切似乎安装成功。

如果你不使用本地模块(从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本身所在的机器的位置。