Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点服务器can'的Systemd服务;t连接到MongoDB_Node.js_Mongodb_Boot_Systemd_Intel Edison - Fatal编程技术网

Node.js 节点服务器can'的Systemd服务;t连接到MongoDB

Node.js 节点服务器can'的Systemd服务;t连接到MongoDB,node.js,mongodb,boot,systemd,intel-edison,Node.js,Mongodb,Boot,Systemd,Intel Edison,我已经创建了一个Systemd单元文件,以便在系统启动时运行Mongodb。我还创建了一个systemd服务,在mongodb启动后在启动时运行我的节点应用程序。mongodb的服务工作正常,但由于某些原因,我的节点应用程序服务尝试运行,然后出现错误:“MongoError:无法在第一次连接时连接到服务器[localhost:27017]”。如果我使用$systemctl start mongodb启动mongodb服务,然后使用$/usr/bin/Node/Node\u app\u slot/

我已经创建了一个Systemd单元文件,以便在系统启动时运行Mongodb。我还创建了一个systemd服务,在mongodb启动后在启动时运行我的节点应用程序。mongodb的服务工作正常,但由于某些原因,我的节点应用程序服务尝试运行,然后出现错误:“MongoError:无法在第一次连接时连接到服务器[localhost:27017]”。如果我使用
$systemctl start mongodb
启动mongodb服务,然后使用
$/usr/bin/Node/Node\u app\u slot/server.js启动我的节点应用程序,它似乎可以正常工作。因此,问题似乎出在节点服务器的systemd单元文件上

我在mongodb systemd服务中使用了这个

这是我的node_server.service:

[Unit]
Wants=network.target mongodb.service
After=network.target mongodb.service

[Service]
ExecStart=/usr/bin/node /node_app_slot/server.js

[Install]
WantedBy=multi-user.target
我在intel edison上使用hostapd以接入点模式进行设置。该操作系统是Yocto,是最新的最新版本

我看不出我哪里做错了。如果有人能为我指引正确的方向,我将不胜感激


谢谢

您的
systemd
语法正确,但您可能希望使用
网络联机.target
而不是
网络.target

一个需要考虑的问题是在MangoDB应用程序启动之前增加5秒的睡眠时间。由于这是在服务器启动时发生的,因此额外的5秒不太可能产生实际的影响,但可能会解决您的问题

 ExecStartPre=/bin/sleep 5

奇怪的是,当MongoDB附带自己的
systemd
服务文件时,您正在从internet复制/粘贴MongoDB
systemd
服务文件。您没有提到您的OS版本、systemd版本或MongoDB版本,但如果您没有使用随文件附带的MongoDB版本,我仍然建议您参考官方的
MongoDB
systemd配置文件

我也有类似的问题。问题可能是您试图在网络服务启动完成之前进行连接。您可以查看此处,看看它是否解决了您的问题:


我想知道MongoDB服务器是否需要一段时间才能真正开始接受传入连接。你能在某处插入一个sleep,看看它是否会在10秒左右后接受它们吗?你看过你的mongodb日志了吗?如果mongodb准备好接受连接,您必须看到您的nodejs请求。此外,重试连接而不是失败(可能是通过成倍地取消连接尝试)也是有意义的