问题描述
我是全栈开发的新手,我想部署一个将由不同用户在同一网络上使用的项目。我在前端使用了 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 文件中更改它.