javascript - express js,拒绝连接到来自其他计算机的端点
问题描述
我有一个快速服务器设置和前端的 React。express 服务器在端口 5000 上运行并在 3000 上做出反应。我也在使用 JWT 令牌。
如果我从计算机登录到应用程序,它在一切上运行都很好。我可以访问 api 端点并取回数据。
如果我使用本地 IP 从同一网络上的另一台计算机登录。我可以进入反应前端,我也可以登录。但是,如果我尝试访问在 localhost:5000 上运行的任何 api 端点,我会收到错误连接被拒绝。设置中似乎一切正常,我无法弄清楚问题是什么。会不会是 Windows 的防火墙阻止?还是仅仅通过路由器?
请注意,我也尝试过使用 NGROK,它的行为方式相同。我尝试了更糟糕的 Heroku,我什至无法登录,似乎我输入字段是必需的,即使我在其中输入一些东西也很困难,就像每当我使用 Heroku 时它都会向后端发送一个空对象。
快递服务器.js
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const passport = require("passport");
const cors = require('cors')
const path = require('path')
const users = require("./routes/api/users");
const tickets = require("./routes/api/tickets");
const alerts = require("./routes/api/alerts");
const avaya = require("./routes/api/avaya");
const exercises = require("./routes/api/exercises");
const app = express();
// CORS Middleware
app.use(cors())
// Bodyparser middleware
app.use(
bodyParser.urlencoded({
extended: false
})
);
app.use(bodyParser.json());
// DB Config
const db = require("./config/keys").mongoURI;
// Connect to MongoDB
mongoose
.connect(
db,
{ useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true }
)
.then(() => console.log("MongoDB successfully connected"))
.catch(err => console.log(err));
// Passport middleware
app.use(passport.initialize());
// Passport config
require("./config/passport")(passport);
// Routes
app.use("/api/users", users);
app.use('/api/tickets', tickets);
app.use('/api/alerts', alerts);
app.use('/api/avaya', avaya);
app.use('/api/exercises', exercises);
// Serve static assets if in production
// if (process.env.NODE_ENV === 'production') {
// // Set static folder
// app.use(express.static('client/build'));
// app.get('*', (req, res) => {
// res.sendFile(path.join(__dirname, 'client', 'build', 'index.html'));
// });
// }
const port = process.env.PORT || 5000;
app.listen(port, '0.0.0.0', () => console.log(`Server up and running on port ${port} !`));
解决方案
使您的客户端 axios 请求以您的 IPv4 地址和服务器端口为目标,还确保您可以使用邮递员或类似的东西访问您的 IPv4 地址:5000
推荐阅读
- swift - 在启用分页的 ScrollView 中居中 ImageView - Swift
- javascript - 如何使用 JS、Node.JS 和 Discord.JS 获取 SQLITE 数据库中的行数?
- docker - 为什么我不能再启动我的 Docker 服务了?
- java - Jenkins启动报错:jenkins.model.InvalidBuildsDir: does not contain ${ITEM_FULL_NAME} or ${ITEM_ROOTDIR}, 无法区分项目
- python - 如何计算给定 RFMin 和 RFMax 之间的重复标签
- python - 如何在 JSON 文件中搜索对象,然后更改其中一个密钥对的值?
- c# - 如何将包含然后包含在实体框架中转换为 MySQL 查询
- asp.net-core - 部署 asp.net core 3.1 应用程序的问题
- python-3.x - 类属性 - 从列表中删除字典
- python - Numpy for 循环矢量化:使用 np.all 广播和测试独特元素