问题描述
我正在尝试根据指南构建 MERN 堆栈应用程序。这个应用程序的重点是保存一些信息的链接并制作它的快捷方式,按下快捷方式链接后,它必须重定向到原始链接。我的问题是,按下快捷链接后,我被重定向到这个看起来很奇怪的链接“http://localhost:3000/detail/http//:localhost:5000/t/gQ3pKjsPQ”,并收到错误“失败加载资源:服务器响应状态为 500(内部服务器错误)”。这就是实现重定向的地方
const {Router} = require('express')
const Link = require('../models/Link')
const router = Router()
router.get('/:code',async (req,res) => {
try {
const link = await Link.findOne({code: req.params.code})
if (link) {
link.clicks++
await link.save()
return res.redirect(from.link)
}
res.status(404).json('Can not find the link')
} catch (e) {
res.status(500).json({message: 'Something went wrong'})
}
})
module.exports = router
有时(就像不总是这样,不明白为什么)我在终端中收到此错误“[1] 代理错误:无法将请求 /api/link/http 从 localhost:3000 代理到 http: //本地主机:5000/。”
import React,{ useCallback,useEffect,useState,useContext } from 'react'
import { useParams } from 'react-router-dom'
import { useHttp } from '../hooks/http.hook'
import { AuthContext } from '../context/AuthContext'
import { Loader } from '../components/Loader'
import { LinkCard } from '../components/LinkCard'
export const DetailPage = () => {
const {token} = useContext(AuthContext)
const {request,loading} = useHttp()
const [link,setLink] = useState(null)
const linkId = useParams().id
const getLink = useCallback( async () => {
try {
const fetched = await request(`/api/link/${linkId}`,'GET',null,{
Authorization: `Bearer ${token}`
})
setLink(fetched)
} catch (e) {}
},[token,linkId,request])
useEffect(() => {
getLink()
},[getLink])
if(loading) {
return <Loader />
}
return (
<>
{!loading && link && <LinkCard link = {link} />}
</>
)
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)