安装npm模块时遇到问题。 NodeJS安装在Windows主机上的Virtual Box上运行的Ubuntu 11.10上。我的项目文件在NTFS分区上(我必须与windows共享它们)。当我尝试安装一些npm模块时,我收到一个错误,并且没有安装模块。我发现当npm尝试创建符号链接时会出现问题。
可能你不能在NTFS分区上创建符号链接,当我在Linux文件系统中安装模块时,一切正常。
我该如何解决这个问题?我不想手动解决依赖关系:/
答案 0 :(得分:55)
从版本1.2.21开始,npm为install
命令提供了一个新选项。 --no-bin-links
您可以使用if来安装特定节点模块
npm install express --no-bin-links
以及package.json安装
npm install --no-bin-links
使用此选项,我已经能够在VM内部的共享forlder中安装许多npm模块而没有问题(Ubuntu guest,Windows Host)
将选项添加到npm代码的提交是b4c58617039c21c10889a9869f8e86a23e17d3a0
答案 1 :(得分:5)
试试这个 - http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/
适合我!
基本上你设置了一个参数
VBoxManage setextradata YOURVMNAME VBoxInternal2 / SharedFoldersEnableSymlinksCreate / YOURSHAREFOLDERNAME 1
然后以管理员身份运行VM ....
答案 2 :(得分:5)
符号链接权限或--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
答案 3 :(得分:3)
我很确定无法在共享驱动器(“共享文件夹”)上创建符号链接。使用Windows主机和Linux来宾更加不可能。
主机计算机无法识别来宾的文件系统。来宾机是主机的黑盒子。当主持人不知道/etc/...
的位置时,您无法向主持人“这个链接到/etc
”说出来。)
所以简而言之:遗憾的是没有。
更详细一点:
如果我错了,我会很高兴的!这是我开发过程中的一个主要痛苦。我尝试了很多选择。默认情况下,“共享文件夹”使用的文件系统为vboxsf
,如果与samba
(Windows的默认网络共享协议)不同,则为:
除了samba
和nfs
之外,可能还有一个网络共享协议,它可能会在尝试创建“符号链接”时复制文件?我真的不知道。
但是我还没有找到一个并且“锁定”似乎是文件系统本身的任务所以我怀疑任何网络协议(除非有某种专用的注册表对于锁)可以做到这一点。
答案 4 :(得分:1)
对于在尝试npm install --no-bin-links
后仍然遇到此问题的任何人。
当我遇到使用VirtualBox在Windows 7主机上的Laravel Homestead Vagrant框上运行npm install
的类似问题时,我无法获得上述任何解决方案。来宾框具有Windows文件系统的映射目录。
问题是导致各种错误消息和包安装失败。与该问题最相关的是npm ERR! UNKNOWN, symlink '<some filename>'
。
为了解决这个问题,我能够在Windows上的Git bash命令行上成功运行npm install
,而不是在来宾Linux上进行bash。
为此,您需要安装Git for Windows和NodeJS(都在Windows机器上)。
e.g。
choco install nodejs.install
choco install git.install
C:\Program Files (x86)\Git\Git Bash.vbs
cd /c/projects/projectname
npm install
一切似乎都安装成功。
答案 5 :(得分:0)
如果您不使用本机模块(从C / C ++编译),您可以在Ubuntu VM上使用npm并将node_modules文件夹复制到Windows驱动器。
答案 6 :(得分:0)
fsutil行为集SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
此命令在Windows上启用符号链接。为了更好地解释最终访问时的神秘命令:How do I overcome the "The symbolic link cannot be followed because its type is disabled." error when getting the target of a symbolic link on Server 2008?
摘要
fsutil行为集的行为代码SymlinkEvaluation - 即L2L,L2R,R2L和R2R - 表示以下内容:
L代表“Local”,R代表“Remote”(谁会砰的?) FIRST L或R - 在2之前 - 指的是相对于访问链接的机器的链接本身(与其目标相对)的位置。 SECOND L或R - 在2之后 - 指的是链接目标相对于LINK本身所在机器的位置。