当前位置: 首页 > 知识库问答 >
问题:

建立在React(前端)和Node Express在同一端口(条纹集成)上的App?

佴阳辉
2023-03-14

我有一个现有的在线商店应用程序在前端创建了React和我正在尝试整合STRIPE作为支付方法使用NODE express在后端。我希望在同一个端口上启动它们,我尝试使用package.json中的代理,并将index.html作为静态文件提供服务,但它不起作用。

我确实将index.html作为静态文件提供,但它似乎除了HTML之外不读取任何其他内容。下面是我的代码:

server.js

const express = require('express');
require('dotenv').config('.env');
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
const path = require('path')
import Products from './src/components/Products';
import CartItem from './src/components/context/cartProvider';


const app = express();

// I am trying to serve the whole React app as static file
app.use(express.static('public'));

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'public', 'index.html'))
  })




// ENDPOINTS FOR SESSION HERE

app.post("/create-checkout-session", async (req, res) => {



    const session = await stripe.checkout.sessions.create({
      payment_method_types: ["card"],
      line_items: [
        // Here we have to send clonedCart[] as body
      ],
      mode: "payment",
      success_url: "https://example.com/success",
      cancel_url: "https://example.com/cancel",
    });
  
    res.json({ id: session.id });
  });  



app.listen(4000, () => console.log('Server is running on port 4000'))

在package.json中,我添加了以下一行:

  "proxy": "http://localhost:4000",

在默认端口3000上执行React的值

共有1个答案

凤高澹
2023-03-14

从node.js服务器代码提供静态html将不起作用。由于您使用的只是公用文件夹html,因此无法使用。要使用它,您需要使用构建版本。

从你的问题中我能理解的是,你需要在同一个端口上运行它们,因为你可能会得到cors错误。所以使用cors模块。

 类似资料:
  • 我在不同的端口(80008001)上运行后端和前端,无法从express服务器生成res.redirect(…),并且浏览器显示CORS错误(访问XMLHttpRequest at…)。 这是MEVN(Mongo,Express,Vue,Nodejs)应用程序,Vue前端和Express(nodejs)后端在不同的端口上运行。我在后端实现了cors(),它使我的前端可以发出请求(get,post)

  • 问题内容: 我有一个app.js,用于在接收到一些POST数据时触发两个事件: 将POST数据插入数据库 使用WebSocket向客户端发送消息 这是 app.js (仅重要的 几 行) 这是 server.js (仅重要的 几 行) 我想要实现的是以侦听应用程序相同端口的方式设置WebSocketServer。我考虑过将 服务器 var从 app.js 传递到 server.js, 但是 我认为

  • 问题内容: 在ExpressJS的第三个版本中, express.createServer() 更改为 express(), 此更改使得很难在同一端口上绑定socket.io。也许有人可以找到明智的决定。 现在,这不起作用: 我当前的工作流程:https : //gist.github.com/3596852 问题答案: 它在socket.io github页面上进行了描述(如@Golo在您的评论

  • 问题内容: 我的php文件位于端口80(默认端口),而我的ajax调用位于端口8080上。 我在端口8080上的index.html 我的PHP 我有点google,JSONP大多出来了。知道如何将其转换为JSONP吗? 有什么办法可以使其工作? 问题答案: 实施JSONP服务非常简单,您只需要一个 回调 GET参数,最后,打印一个包含与以JSON数据作为参数的函数调用等效的字符串: 然后,您可以

  • 问题内容: 我想更改mysql docker容器的默认公开端口,但是如果我尝试使用此命令: 这没用。 如果我使用标准端口3306:3306,则工作正常,但我想更改端口。有可能吗? 我已经尝试过-p 52000:3600,但是我总是得到: 问题答案: 您需要在(服务器的)首选TCP端口上映射容器端口3306: 所以对于你的mysql

  • 我正在使用React构建一个简单的项目,我希望它连接到一个数据库(mongodb Atlas)。但是,我只能使用Node连接到我的数据库。是否可以在同一个端口3000上运行两个节点和反应? 我还将Express与Node一起使用,因为我发现在制作具有相同navBar和页脚的新页面时使用ejs文件非常方便。 有没有可能把这三个人放在一个港口?