节点应用程序无法在 digitalocean 服务器上运行

时间:2021-05-04 13:42:00

标签: node.js express digital-ocean

我已将一个应用程序克隆到我的 Droplet,但现在它无法正常工作,也没有显示任何错误我是编程新手,任何人都可以帮助我部署它。 我已经在上面创建了 droplet 安装节点 js、npm 和 mongodb,并且一切正常, 我的 app.js 代码是 让端口 = 80;

      mongoose.connect(process.env.dbURI, dbOptions)
     .then((conn) => {
       app.listen(port,'165.22.223.8');
      console.log('connection success port:' +port);
  })
   .catch((err) => console.log(err));

1 个答案:

答案 0 :(得分:0)

我怀疑 (!?) 165.22.223.8 不是您的 DigitalOcean Droplet 的 IP 地址。如果这是 Droplet 的正确公共 IP 地址,则可能是您尚未将 Droplet 的防火墙配置为允许端口 80 上的流量。请参阅下面的调试。

<块引用>

注意 端口 <1024(即 80)需要 root。这可能是您面临的另一个问题。您可能希望在开发时尝试(常用的)8080 而不是 80。如果您这样做,请将出现的 80 替换为以下内容中的 8080

命令 app.listen 尝试将 Express 服务器绑定到 port 上的特定 IP 地址。

我认为您可以完全避免指定主机名而只需使用:

app.listen(port);

要调试(无论哪种情况),请通过 ssh 连接到 Droplet 并尝试 curl 访问本地主机的端口 80(假设这确实是 port 的值),即:

HOST="localhost"
PORT="80" # Or 8080 

curl \
--request GET \
http://${HOST}:${PORT}

成功后,您可以尝试远程访问服务器。您需要确定 Droplet 的公共 IP 地址,然后:

HOST=[[REPLACE-WITH-DROPLET-IP]]
PORT="80" # Or 8080

curl \
--request GET \
http://${HOST}:${PORT}