Linux 是否可以在Vagrant Synched文件夹中使用Node.js创建套接字?

Linux 是否可以在Vagrant Synched文件夹中使用Node.js创建套接字?,linux,node.js,sockets,vagrant,Linux,Node.js,Sockets,Vagrant,我已经为我的邮箱创建了一个Vagrantfile配置,其中包括这一行,将同步文件夹的权限设置为777,以确保其完全可写: dev.vm.synced_folder "apps/", "/httpd", :owner=> 'stella', :group=>'stella', :mount_options => ['dmode=777', 'fmode=777'] 启动CentOS 6.4 vagrant box和ssh后,我可以确认: $ ls -la /httpd drwx

我已经为我的邮箱创建了一个Vagrantfile配置,其中包括这一行,将同步文件夹的权限设置为777,以确保其完全可写:

dev.vm.synced_folder "apps/", "/httpd", :owner=> 'stella', :group=>'stella', :mount_options => ['dmode=777', 'fmode=777']
启动CentOS 6.4 vagrant box和ssh后,我可以确认:

$ ls -la /httpd
drwxrwxrwx.  1 stella stella  442 Nov 11 09:33 june
我可以将其放入index.js文件的顶部:

fs.writeFile("/httpd/june/test", "Hey there!", function(err) {
    if(err) {
        console.log(err);
    } else {
        console.log("The file was saved!");
    }
});
当我运行
node index.js
node运行脚本并成功创建一个文件时。这一切都是为了确认节点可以成功地在项目的根路径中写入新文件。我还将我的程序移到了同步文件夹之外,它运行得完美无缺


我遇到的问题是如何创建套接字。我有两个引人注目的节点模块,它们预计将在项目的根路径中创建套接字,但是每当node.js尝试创建套接字并且我的程序退出时,我会收到一个
错误:操作不允许
错误

我正在尝试创建的套接字是:
-127.0.0.1:3005
-127.0.0.1:3006

我在网上几乎找不到任何关于这个问题的信息,只知道Node.js不可能在共享/同步文件夹上创建套接字

我使用的节点模块是cluster master和zmq。群集主机到达此行后将关闭:

当我尝试将我的服务器绑定到端口时,节点zmq会关闭(显然我不能发布超过两个链接,因为我可以提供尽可能多的信息!):如果你可以通过google找到Justin Tulloss的zmq,我的服务器在到达lib/index.js(Socket.prototype.bind函数)的第218行时就会被迫关闭

我认为这是一个权限问题的原因是,当成功启动时,这两个模块都会将文件写入我的项目的根目录:用于套接字的ZMQ和用于REPL的集群主目录,如果我将项目移动到,比如说,/var/www/june,我不会有任何问题。我的程序启动,cluster master和zmq写入它们的文件,我可以通过端口进行通信,没有问题

我的问题只在于流浪同步文件夹

我想我是在问这样在共享文件夹中创建套接字是否确实不可能。如果是这样的话,我能做些什么作为工作吗

将我的应用程序保存在共享文件夹中是可取的,因为我的团队和我可以在运行vm或不运行vm的情况下处理文件,我可以在主机上使用IDE环境,等等

更新: 在群集主控中,如果我更改源中的行:

var socket = path.resolve('cluster-master-socket')
致:


群集主机不再导致我的服务器退出。然而,对于ZMQ,我看不到任何像这样简单的修复。这实际上让我困惑,究竟是什么导致了错误,写入文件还是打开套接字?

首先猜测:您试图绑定<1024个端口,而您的进程是以非root用户的身份运行的。尝试使用端口>=1024。这是一个很好的猜测,我应该在问题中包括端口号,但我尝试绑定到的端口都在3000以上。我还可以以root身份运行节点,并收到相同的
错误:不允许操作
“预期在项目的根路径中创建套接字”。你是指TCP套接字还是unix域套接字?因为TCP套接字与文件系统或路径完全无关。但Unix域套接字受文件系统权限的限制。我添加了一些详细信息,说明了导致错误的具体行。我实际上没有回答您的问题,我使用的是用于ZMQ的TCP套接字,看起来cluster master也创建了TCP套接字。
var socket = path.resolve('/tmp/cluster-master-socket')