我们可以在同一个端口上托管React Js中的前端和Node中的后端吗?[已关闭]

svujldwt  于 2023-10-17  发布在  Node.js
关注(0)|答案(2)|浏览(123)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

6天前关闭
Improve this question
我试图主机前端和后端都在同一个端口上,但前端组件无法从后端调用API,并且一个组件没有在前端加载,其中描述了API函数代码。
当我手动尝试时,数据是从API加载的,但在React组件中没有调用。FE和BE都在同一个文件夹中,具有共同的package.json文件。

sg2wtvxw

sg2wtvxw1#

两个进程(服务器)不能绑定到同一个端口。您必须将它们托管在不同的端口中。

rur96b6h

rur96b6h2#

当然可以听起来你面临着在同一个端口上托管前端和后端的问题,你的React前端无法对后端进行API调用。以下是一些常见步骤和故障排除提示,可帮助您解决此问题:
1.检查CORS策略:跨域资源共享(CORS)可以防止前端对不同的域或端口进行API调用。确保后端API配置为允许来自前端域的请求。您可以通过在后端代码中设置适当的CORS头来做到这一点。
在Node.js中的示例(Node.js后端):

const express = require('express');
const cors = require('cors');

const app = express();

// Allow requests from your frontend domain
app.use(cors({ origin: 'http://your-frontend-domain.com' }));

// Other middleware and route handling here

// Start the server
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

1.检查API端点:确保前端代码中的API端点正确配置为指向后端服务器。仔细检查API调用中的URL和端口,确保它们与后端配置匹配。
React中的例子:

const apiUrl = 'http://localhost:3000/api/data'; // Replace with your backend URL

fetch(apiUrl)
  .then(response => response.json())
  .then(data => {
    // Process the data
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });

1.验证端口配置:确保前端和后端实际上运行在同一个端口上,并且没有冲突的端口配置。你的前端和后端不应该尝试使用同一个端口。
1.检查错误:在前端代码中,检查浏览器的开发人员控制台是否有任何与失败的API请求相关的错误消息。这可以提供关于可能出错的地方的有价值的信息。
1.网络请求检查:您可以使用浏览器开发工具(例如,Chrome DevTools)来检查网络请求。检查是否正在发出API请求,以及是否有任何错误响应。
1.代理配置:如果你使用的是像Create React App的开发服务器(通常运行在3000端口上)这样的开发服务器和一个单独的后端服务器,你可能需要配置一个代理,以便在开发过程中将API请求从前端转发到后端。这通常在package.json文件中完成:

"proxy": "http://localhost:3001" // Replace with your backend URL

1.防火墙与安全:确保您的防火墙或安全设置没有阻止前端和后端之间的请求。
1.控制台日志:在前端代码中添加控制台日志,以帮助调试可能发生问题的位置。记录API请求URL和任何错误消息。
通过系统地检查这些点,您应该能够识别并解决阻止React前端在同一端口上对后端进行API调用的问题。

相关问题