首页 > 解决方案 > 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')
})

标签: javascriptnode.jsdebuggingaxios

解决方案


推荐阅读