اذهب إلى المحتوى

السؤال

نشر

قمت باتباع مقال حول استخدام express مع nextjs وكل شئ كان يعمل بسلاسة وفي الصفحة تم جلب البيانات 

server.get('/api/posts', (req, res, next) => {
   
    Post.find({}, (err, posts) => {
      res.send(products)
    })
  })
import Layout from '../components/MyLayout.js'
import Link from 'next/link'
import fetch from 'isomorphic-unfetch'

const Posts = (props) => (
  <Layout>
    <h1>List of Products</h1>
    <ul>
      { props.posts.map((post) => (
        <li key={post._id}>{ post.title }</li>
      ))}
    </ul>
  </Layout>
)

Products.getInitialProps = async function() {

  const res = await fetch('/api/psts')
  const data = await res.json()


  return {
    products: data
  }
}

export default Products

لكن عند تحديث الصفحة كل شئ يتوقف وأحصل على هذا الخطأ

Error: only absolute urls are supported

 

Recommended Posts

  • 0
نشر

كما يوضح الخطأ ، سيتعين عليك استخدام عنوان URL مطلق absolute من أجل fetch الذي تقوم بإستخدامه.

يبدوا أن المشكلة له علاقة بالبيئات المختلفة (العميل والخادم) التي يمكن تنفيذ التعليمات البرمجية الخاصة بك عليها. عناوين URL النسبية relative ليست واضحة وموثوقة بدرجة كافية في هذه الحالة.

تتمثل إحدى طرق حل هذه المشكلة في كتابة عنوان الخادم يدوياً في طلب fetch .

وطريقة أخرى عبر إعداد وحدة config والتي تتفاعل مع بيئتك:

/config/index.js
const dev = process.env.NODE_ENV !== 'production';

export const server = dev ? 'http://localhost:3000' : 'https://your_deployment.server.com';

وفي الكود الخاص بك

import { server } from '../config';

// ...

Products.getInitialProps = async function() {

  const res = await fetch(`${server}/api/psts`)
  const data = await res.json()


  return {
    products: data
  }
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...