我是Reactjs的初学者,也是StackOverflow的新手。实际上,我正在尝试将数据从后端传递到前端。但是,它不是从后端url获取JSON数据,而是从前端的index.html获取数据。我的后端是nodejs。基本上,我希望从后端获取JSON数据,并将数据发布到前端控制台。但是我得到了这个SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
,任何人都能帮我解决这个问题。反应nodejs
前端代码
App.js
import React from 'react';
import {useState, useEffect} from 'react';
import {getOrder} from './ApiCalls.js'
function App() {
const[values, setValues]=useState({
amount:0,
orderId:''
})
const{amount, orderId}=values
useEffect(() => {
createorder()
}, [])
const createorder=()=>{
getOrder().then(response=>console.log(response))
}
const showRazorPay=()=>{
const form=document.createElement('form')
form.setAttribute('action',`${process.env.REACT_APP_BACKEND}/payment/callback`);
form.setAttribute('method',"POST");
const script=document.createElement("script");
script.src= "https://checkout.razorpay.com/v1/checkout.js";
script.setAttribute("data-key",process.env.REACT_APP_DATA_KEY);
script.setAttribute("data-amount", amount);
script.setAttribute("data-prefill.contact","9561315545");
script.setAttribute("data-order_id", orderId);
script.setAttribute("data-prefill.name", "Priyanka Chaudhari");
script.setAttribute("data-image", `${process.env.REACT_APP_BACKEND}/logo`)
script.setAttribute("data-buttontext","Donate Now!");
document.body.appendChild(form);
form.appendChild(script);
const input= document.createElement("input");
input.type="hidden";
input.custom="Hidden Element";
}
return (
<div>
</div>
);
}
export default App;
ApiCalls.js
export const getOrder=()=>{
return fetch(`${process.env.REACT_APP_BACKEND}/createorder`,{
method: "GET",
headers: {
'Content-Type':'application/json'
}
}).then(response=>response.json())
.catch((err)=>console.log(err))
}
后端代码
App.js
const express=require('express')
const bodyParser=require('body-parser')
const cors=require('cors')
const app=express()
const PaymentRoute=require('./PaymentRoute')
app.use(bodyParser.json())
app.use(cors())
app.use('/api',PaymentRoute);
app.listen(5000,()=>{
console.log(`App is running at 5000 port`)
})
PaymentRoute.js
const express=require('express')
const router=express.Router()
const{CreateOrder,paymentCallback,getLogo}=require('./PaymentController')
router.get('/createorder',CreateOrder);
router.post('/payment/callback',paymentCallback)
router.get('/logo',getLogo)
module.exports=router;
PaymentController.js
require('dotenv').config()
const Razorpay=require('razorpay')
const uniqueId=require('uniqid')
const path=require('path')
var instance = new Razorpay({ key_id: process.env.KEY_ID, key_secret: process.env.SECRET_KEY })
// instance.payments.fetch(paymentId)
exports.CreateOrder=(req,res)=>{
var options = {
amount: 50000, // amount in the smallest currency unit
currency: "INR",
receipt: uniqueId()
};
instance.orders.create(options, function(err, order) {
if(err){
return res.status(500).json({
error:err
})
}
res.json(order)
});
}
exports.paymentCallback=(req,res)=>{
}
exports.getLogo=(req,res)=>{
res.sendFile(path.join(__dirname,'donate-image.png'))
}
发布于 2022-09-21 06:41:08
我将createorder
函数名更改为createOrder
,就像在process.env.REACT_APP_BACKEND/createorder
中一样,/createorder
已经出现在我的路径名中,因此我认为这是导致此错误的原因。
https://stackoverflow.com/questions/73756234
复制相似问题