Next.js - Error: only absolute urls are supported

后端 未结 6 1158
感动是毒
感动是毒 2020-12-29 10:05

I\'m using express as my custom server for next.js. Everything is fine, when I click the products to the list of products

Step 1: I click the produc

6条回答
  •  -上瘾入骨i
    2020-12-29 10:18

    As the error states, you will have to use an absolute URL for the fetch you're making. I'm assuming it has something to do with the different environments (client & server) on which your code can be executed. Relative URLs are just not explicit & reliable enough in this case.

    One way to solve this would be to just hardcode the server address into your fetch request, another to set up a config module that reacts to your environment:

    /config/index.js

    const dev = process.env.NODE_ENV !== 'production';
    
    export const server = dev ? 'http://localhost:3000' : 'https://your_deployment.server.com';
    

    products.js

    import { server } from '../config';
    
    // ...
    
    Products.getInitialProps = async function() {
    
      const res = await fetch(`${server}/api/products`)
      const data = await res.json()
    
      console.log(data)
      console.log(`Showed data fetched. Count ${data.length}`)
    
      return {
        products: data
      }
    }
    

提交回复
热议问题