Node.js 如何在虚拟箱5.0.2中创建符号链接,CentOS 7作为来宾,Windows 7作为主机

Node.js 如何在虚拟箱5.0.2中创建符号链接,CentOS 7作为来宾,Windows 7作为主机,node.js,windows-7,virtualbox,centos7,shared-directory,Node.js,Windows 7,Virtualbox,Centos7,Shared Directory,我正试图在虚拟箱5.0.2中设置CentOS 7作为我的开发箱。我从运行windows 7的主机与来宾共享项目文件夹(然后我可以使用windows GUI和IDE在windows上进行交互,而我的代码在CentOS上运行) 我正在node中进行一些开发。在设置项目并执行npm安装时,我遇到了一个错误: 49132 error Linux 3.10.0-327.13.1.el7.x86_64 49133 error argv "/home/wdd/nvm/versions/node/v5.10.0

我正试图在虚拟箱5.0.2中设置CentOS 7作为我的开发箱。我从运行windows 7的主机与来宾共享项目文件夹(然后我可以使用windows GUI和IDE在windows上进行交互,而我的代码在CentOS上运行)

我正在node中进行一些开发。在设置项目并执行
npm安装时
,我遇到了一个错误:

49132 error Linux 3.10.0-327.13.1.el7.x86_64
49133 error argv "/home/wdd/nvm/versions/node/v5.10.0/bin/node" "/home/wdd/nvm/versions/node/v5.10.0/bin/npm" "install"
49134 error node v5.10.0
49135 error npm  v3.8.3
49136 error path /home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f
49137 error code EPERM
49138 error errno -1
49139 error syscall rename
49140 error Error: EPERM: operation not permitted, rename '/home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f' -> '/home/wdd/share/mynps-corporate-client/node_modules/iconv-lite'
49140 error     at destStatted (/home/wdd/nvm/versions/node/v5.10.0/lib/node_modules/npm/lib/install/action/finalize.js:25:7)
49140 error     at FSReqWrap.oncomplete (fs.js:82:15)
49140 error
49140 error Error: EPERM: operation not permitted, rename '/home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f' -> '/home/wdd/share/mynps-corporate-client/node_modules/iconv-lite'
49140 error     at Error (native)
49140 error  { [Error: EPERM: operation not permitted, rename '/home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f' -> '/home/wdd/share/mynps-corporate-client/node_modules/iconv-lite'] parent: 'mynps-corporate' }
49141 error Please try running this command again as root/Administrator.
49142 verbose exit [ -1, true ]
当我在网上搜索时,我知道问题出在符号链接上。默认情况下,在共享文件夹上禁用符号链接,因此以下操作也会失败:

ln: failed to create hard link ‘ln-server.js’ => ‘server.js’: Operation not permitted
我试过:

  • sudo
    on guest
  • 主机上的“以管理员身份运行”虚拟机
  • VBoxManage setextradata虚拟机名称vboxiternal2/SharedFolderEnableSymlinksCreate/SHARE\u名称1
  • 更新了用户安全策略并允许创建指向“Everyone”的符号链接
  • 允许所有人对主机中项目文件夹属性的安全设置拥有所有权限
我已经使用了以下链接:


更新(2016-04-21):目前我已经做了一个变通。我在一个未共享的目录中安装了一个
npm
,然后将node_modules目录移动到共享目录中,没有问题。因为我们不经常安装模块,所以这很好。但是,如果能够指出一个真正的解决方案,那就太好了。

从共享Windows项目文件夹处理VM中的节点模块问题的最简单方法是从Linux文件系统中的另一个位置绑定挂载节点模块,但一定要在挂载virtualbox共享文件系统后挂载它

mkdir-p/home/wdd/node_模块/home/wdd/share/mynps公司客户端/node_模块

sudo挂载--bind/home/wdd/node_模块/home/wdd/share/mynps公司客户端/node_模块


您将看不到虚拟机之外的节点模块的内容,但您将不会再遇到符号链接或路径长度方面的问题。

接受的解决方案对我不起作用。我最终在Windows而不是Linux上运行npm安装。但是,对于某些软件包来说,这可能是一个问题

我又找到了一个我还没有尝试过的解决方案。如果只是符号链接有问题,您可以跳过创建符号链接

npm安装--无bin链接

请参阅此处的更多信息: