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

问题描述

我是全栈开发的新手,我想部署一个将由不同用户在同一网络上使用的项目。我在前端使用了 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",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);
  }
})

})

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

解决方法

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

,

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...