【问题标题】:Node: VM12:1 POST http://localhost:3000/auth net::ERR_CONNECTION_REFUSED节点:VM12:1 POST http://localhost:3000/auth net::ERR_CONNECTION_REFUSED
【发布时间】:2021-03-30 14:41:10
【问题描述】:

我是全栈开发的新手,我想部署一个项目,供不同用户在同一网络上使用。我在前端使用了 angular,在后端使用了 node/express 和 MySQL。在正确部署之前,出于测试目的,我正在从同一网络上的另一台计算机访问我的应用程序。但是,当我尝试登录时,应用程序会抛出错误。

VM12:1 POST http://localhost:3000/auth net::ERR_CONNECTION_REFUSED

这是我的后端代码:

server.js

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const mysqlConnection = require('./connection');
const routes = require('./routes');

const http = require('http');
const path = require('path');

var app = express();

app.disable('x-powered-by');

app.use(express.static(__dirname + '/dist'));

app.get('/*', (req, res) => res.sendFile(path.join(__dirname)));

app.use(cors());

app.use(bodyParser.json());

app.use(routes);

const port = process.env.PORT || 3000;

const server = http.createServer(app);

server.listen(port, '0.0.0.0', () => console.log(`Running on port ${port}`));

routes.js

router.post("/auth", (req, res) => {

var email = req.body.email;
var password = req.body.password;
var accessBasic = "Basic";
var accessPremium = "Premium";

mysqlConnection.query("SELECT * FROM authorization WHERE email = ? AND password = ?", [email, 
password], (err, results) => {

  if(!err)
  {
    var myJSON = JSON.stringify(results);
    var check_email = myJSON.search(/email/i);
    var check_password = myJSON.search(password);
    var check_access = myJSON.search(accessBasic);
    var check_access2 = myJSON.search(accessPremium);

    if ((check_email != -1) && (check_password != -1) && (check_access != -1))
    {
      res.send("Successfully Authorized to Basic Access");
    }
    else if ((check_email != -1) && (check_password != -1) && (check_access2 != -1))
    {
      res.send("Successfully Authorized to Premium Access");
    }
    else
    {
      res.send("Authorization failed");
    }
  }
  else
  {
    console.log("Connection to authorization failed: " + err.message);
  }
})

})

我已在我的防火墙中允许传入连接并完成了所有操作,但是在尝试连接同一网络上我的系统以外的设备时,找不到我的端点拒绝连接的原因。我不知道怎么了。有人知道我在做什么错吗?我在我的系统上托管了我的应用程序,并从同一网络上的另一个访问它。

编辑:由于这个问题已经获得了相当多的意见,我想提一下,我没有更改上述任何防火墙设置。使用了 Windows 操作系统的所有默认防火墙设置。我刚刚部署并运行了该应用程序。

回答:我在前端遇到了问题。我的目标是 localhost,而不是应用程序所在系统的 IP 地址。有关详细信息,请参阅下面的答案。

【问题讨论】:

    标签: node.js express angular-fullstack


    【解决方案1】:

    您可以从 @IP 而不是从本地主机 (127.0.0.1) 访问同一网络中的应用程序,将其更改为 192.168.1.X(您的本地 @IP 地址)并确保在您的 .env 文件中进行更改.

    【讨论】:

    • 这就是为什么我在端口 ${port})); 上使用server.listen(port, '0.0.0.0', () => console.log(Running。这将允许从同一网络上的设备连接到我的应用程序。但是,REST API 端点拒绝连接。
    【解决方案2】:

    对于将来会看到此内容的任何人。我的前端出现错误。我没有调用http://localhost:3000/name-of-my-api-endpoint,而是将localhost 更改为我系统的IP 地址,然后再次运行ng build --prod,以便创建新的静态文件并从node.js 提供它们。

    【讨论】:

      猜你喜欢
      • 2016-07-21
      • 2019-12-23
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多