javascript - Axios 调用返回 net::ERR_EMPTY_RESPONSE 我不知道为什么
问题描述
每当我对“/login”端点进行 axios 调用时,我都会在浏览器控制台中不断打印以下错误。我已经包含了 server.js 文件和我正在调用的文件以供您参考。
安装在客户端文件夹中的依赖项:axios、react、react-dom、react-router-dom 安装在服务器文件夹中的依赖项:cors、express、node、spotify-web-api-node
GET http://localhost:3001/login net::ERR_EMPTY_RESPONSE
index.js 文件
import axios from 'axios'
const Profile = () => {
const login = () => {
console.log("testing login function - client")
axios.get("http://localhost:3001/login")
.then(() => {
console.log("success")
})
.catch(() => {
console.log("error")
})
}
return (
<div className="profile">
.
.
.
<div className="button">
<button onClick={() => login()} className="btn">Log In</button>
</div>
</div>
</div>
)
}
export default Profile
server.js 文件
const SpotifyWebAPINode = require('spotify-web-api-node')
const express = require('express')
const cors = require("cors")
const app = express()
app.use(cors)
// This file is copied from: https://github.com/thelinmichael/spotify-web-api-node/blob/master/examples/tutorial/00-get-access-token.js
const scopes = [
'user-top-read',
'user-library-read',
'playlist-read-private',
'playlist-read-collaborative',
'playlist-modify-public',
'playlist-modify-private',
]
// credentials are optional
var spotifyApi = new SpotifyWebAPINode({
clientId: 'XXX',
clientSecret: 'XXX',
redirectUri: 'http://localhost:3001/callback',
})
app.get('/login', (req, res) => {
console.log("testing login endpoint - server")
res.redirect(spotifyApi.createAuthorizeURL(scopes))
})
app.get('/callback', (req, res) => {
const error = req.query.error
const code = req.query.code
const state = req.query.state
if (error) {
console.error('Callback Error:', error)
res.send(`Callback Error: ${error}`)
return
}
spotifyApi
.authorizationCodeGrant(code)
.then((data) => {
const access_token = data.body['access_token']
const refresh_token = data.body['refresh_token']
const expires_in = data.body['expires_in']
spotifyApi.setAccessToken(access_token)
spotifyApi.setRefreshToken(refresh_token)
console.log('access_token:', access_token)
console.log('refresh_token:', refresh_token)
console.log(
`Sucessfully retreived access token. Expires in ${expires_in} s.`,
)
res.send('Success! You can now close the window.')
setInterval(async () => {
const data = await spotifyApi.refreshAccessToken()
const access_token = data.body['access_token']
console.log('The access token has been refreshed!')
console.log('access_token:', access_token)
spotifyApi.setAccessToken(access_token)
}, (expires_in / 2) * 1000)
})
.catch((error) => {
console.error('Error getting Tokens:', error)
res.send(`Error getting Tokens: ${error}`)
})
})
app.listen(3001, () => {
console.log('Server live on port 3001')
})
解决方案
推荐阅读
- r - 在 R Shiny 中,根据用户输入更新对象
- excel - 如何根据另一个单元格中的输入要求不同的文本长度
- java - 如何将变量从php传递到java jar文件
- azure-machine-learning-service - Torchvision 0.3.0 用于在 AML 服务上训练模型
- python-3.x - 使用递归的数字的奇数和偶数之和
- javascript - 浏览器拒绝 javascript play()
- javascript - 如何通过 JS map 函数传递 If 子句
- javascript - 重定向到另一个页面后如何保留吐司布尔玛
- css - 名为“stylesheet.css”的文件是必要的/强制性的吗?
- dropdown - 使用一个单元格将值添加到命名范围