当前位置: 首页>>技术教程>>正文


Node.js + NPM,在ntfs分区上安装模块

, , , ,

问题描述

安装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的默认网络共享协议)不同,则该文件系统如下:

  1. 我尝试使用本机Windows网络共享,然后将网络驱动器安装在来宾中,因为来宾和主机位于同一网络上。问题仍然存在。

  2. 我尝试在Windows(Hanewin NFS服务器)和SFU /SUA(用于UNIX的Windows服务)上运行NFS服务器,但这存在GIT锁问题。可能还有其他问题-不久前,我不清楚

  3. 我尝试了相反的操作:将虚拟机上的目录共享到Windows。但这很愚蠢,因为所有文件都将放在虚拟框上,并且在Windows上的访问速度确实很慢

  4. 我当时很愚蠢,尽管“好吧,让我们在Windows和Linux上都安装一个虚拟驱动器”-不要尝试这样做,破坏虚拟磁盘。我应该知道的东西。

除了sambanfs之外,可能还有其他网络共享协议,它们可能会在尝试创建”symlink”时复制文件吗?我真的不知道

但是我还没有找到,而且”locking”似乎是file-system本身的任务,因此我怀疑任何网络协议(除非具有用于锁定的某种专用注册表)都可以做到这一点。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8633.html,未经允许,请勿转载。