Menghadapi ralat 500 (RuntimeError) semasa mengambil semula data: penyelesaian masalah untuk axios dan nuxtjs
P粉327903045
P粉327903045 2023-08-25 11:06:29
0
1
549
<p>Saya membina halaman berasaskan blog menggunakan WordPress sebagai API dan Nuxt.js sebagai rangka kerja JavaScript. Masalah berlaku dalam fail _slug.vue saya. Apabila saya menavigasi ke halaman blog (projek) individu, catatan blog individu menjadi baik. Walau bagaimanapun, jika saya memuat semula satu halaman catatan blog, atau hanya memasukkan dalam URL, konsol menunjukkan ralat: GET <em>url</em> </p> <pre class="brush:php;toolbar:false;"><template> <kelas div="projek tunggal"> <Pengepala /> <h1>{{project.title.rendered}}</h1> <artikel v-html="project.content.rendered"></article> <ClickToAction /> </div></pra> <pre class="brush:php;toolbar:false;"><script> /* eslint-disable */ import axios daripada 'axios' eksport lalai{ data() { kembali { projek: {} } }, async asyncData({params}){ kembali menanti axios.get('https://my-api.wp/wp-json/wp/v2/project/' + params.id) .then((res) => { kembali { projek: res.data } }).tangkap(fungsi (ralat) { jika (error.response) { // Permintaan dibuat dan pelayan membalas console.log(error.response.data); console.log(error.response.status); console.log(error.response.headers); } else if (error.request) { // Permintaan telah dibuat tetapi tiada jawapan diterima console.log(error.request); } lain { // Sesuatu telah berlaku dalam menyediakan permintaan yang mencetuskan Ralat console.log('Error', error.message); } }); } } </script></pre> <p>以及一个项目的链接:</p> <pre class="brush:php;toolbar:false;"><nuxt-link :class="'item ' + project._embedded['wp:term'][0].map(el => ; el.name.toLowerCase()).join(' ')" v-for="projek dalam projek" :key="project.id" :to="{name: 'projekte-slug', params: { slug: project.slug, id: project.id}}"></pre> <p>目标在nuxt.config.js中是静态的。</p> <h1><strong>编辑</strong></h1> <p>经过研究,我发现在nuxt-link的params对象中传递的id在重新加载后丢失,因为它“需象要值。为了解决这个问题,我通过API使用slug获取了项目,并显示了所有属性(例如标题、内容等)</p> <pre class="brush:php;toolbar:false;">async asyncData({ params, $axios }) { cuba { console.log(params.slug); projek const = menanti $axios.$get(`https://my-api.wp/wp-json/wp/v2/project?slug=${params.slug}&_embed`) pulangkan { projek } } tangkap (ralat) { ... }</pre></p>
P粉327903045
P粉327903045

membalas semua(1)
P粉459578805

asyncDataTidak akan dicetuskan semula apabila memuat semula halaman atau memasukkan URL secara terus.
Jika anda ingin mendapatkan data apabila peristiwa ini berlaku, anda boleh menggunakan fetch()cangkuk atau middleware.


Jawapan yang diedit

Sebelum meneruskan, sila pastikan anda telah memasang @nuxtjs/axios: https://axios.nuxtjs.org/setup

<script>
export default {
  async asyncData({ params, $axios }) {
    try {
      const project = await $axios.$get(`https://my-api.wp/wp-json/wp/v2/project/${params.id}`)
      return { project }
    } catch (error) {
      if (error.response) {
        // Request made and server responded
        console.log(error.response.data)
        console.log(error.response.status)
        console.log(error.response.headers)
      } else if (error.request) {
        // The request was made but no response was received
        console.log(error.request)
      } else {
        // Something happened in setting up the request that triggered an Error
        console.log('Error', error.message)
      }
    }
  },
}
</script>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan