在安装npm模块时,我遇到了一个问题。NodeJS已安装在运行于Windows主机上的Virtual Box上的Ubuntu 11.10上。我的项目文件位于NTFS分区(必须与Windows共享)。当我尝试安装某些npm模块时,会出现错误,并且模块未安装。我发现当npm尝试创建符号链接时,问题会发生。
可能无法在NTFS分区上创建符号链接,但当我在“内部”Linux文件系统中安装模块时,一切正常。
我该如何解决这个问题?我不想手动解析依赖关系 :/
在安装npm模块时,我遇到了一个问题。NodeJS已安装在运行于Windows主机上的Virtual Box上的Ubuntu 11.10上。我的项目文件位于NTFS分区(必须与Windows共享)。当我尝试安装某些npm模块时,会出现错误,并且模块未安装。我发现当npm尝试创建符号链接时,问题会发生。
可能无法在NTFS分区上创建符号链接,但当我在“内部”Linux文件系统中安装模块时,一切正常。
我该如何解决这个问题?我不想手动解析依赖关系 :/
install
命令有了一个新选项:--no-bin-links
。您可以使用它来安装特定的Node模块。npm install express --no-bin-links
还适用于 package.json 安装
npm install --no-bin-links
npm install
之后,仍然显示Error: UNKNOWN, symlink '../coffee-script/bin/cake'
。 - antitoxic--no-bin-links
参数对我们没有效果。相反,我们选择将node_modules
移出/vagrant
共享文件夹。我们在/vagrant/node_modules
和/tmp/node_modules
之间创建了一个符号链接。您只能这样做如果您的node_modules
不在版本控制中。请先查看此文!
另外请参见http://kmile.nl/post/73956428426/npm-vagrant-and-symlinks-on-windows
/etc
在哪里时,你不能告诉主机 “好吧,这个链接指向/etc/...
” :)。vboxsf
,与samba
(Windows的默认网络共享协议)相同或相似,因此:对于那些在尝试了npm install --no-bin-links
后仍然遇到此问题的人。
当我在Windows 7主机上使用VirtualBox运行Laravel Homestead Vagrant box时,遇到了类似的问题,在运行npm install
时,无法使以上任何解决方案起作用。客户机框架已经映射到Windows文件系统。
该问题导致出现各种错误消息和失败的包安装。最相关的一个是npm ERR! UNKNOWN, symlink '<some filename>'
。
为了解决这个问题,我成功地在Windows Git bash命令行上运行了npm install
,而不是在客户Linux上运行。
要做到这一点,你需要在Windows上安装Git和NodeJS。
例如:
choco install nodejs.install
choco install git.install
C:\Program Files (x86)\Git\Git Bash.vbs
cd /c/projects/projectname
npm install
一切似乎都成功安装了。
如果您不使用本地模块(从C / C ++编译),则可以在Ubuntu VM上使用npm,并将node_modules文件夹复制到Windows驱动器中。
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
这个命令可以在Windows上启用符号链接。要了解末尾的神秘命令的更好解释,请访问:如何在Server 2008上获取符号链接目标时克服“符号链接无法被跟踪,因为其类型已禁用”错误?
总之
fsutil行为设置SymlinkEvaluation的行为代码 - 即L2L、L2R、R2L和R2R - 的含义如下:
L代表“本地”,R代表“远程”(谁会想到呢?) 2前面的第一个L或R是指链接本身(而不是其目标)相对于访问链接的机器的位置。 2后面的第二个L或R是指链接目标相对于LINK本身所在的机器的位置。