ReactJS و Next.js 404 بعد إعادة تحميل الصفحة

لدي واجهة رد فعل على مدونة Wordpress الخاصة بي ويعمل بشكل رائع إذا قمت بتشغيل عقدة server.js . يمكنني إعادة تحميل أي صفحة وستعمل كما هو متوقع.

على خادم الإنتاج الخاص بي إذا قمت بتشغيل عقدة server.js فإنه يعمل بشكل جيد. إذا قمت بإنشاء وتشغيل npm run start الذي تم تعيينه لتشغيل next -p 80 فإن موقع الويب لا يعمل بشكل صحيح.

إليك رمز server.js الخاص بي:

const compression = require('compression');
const express = require("express");
const next = require("next");

const dev = process.env.NODE_ENV !== "production";
const app = next({ dev: dev });
const handle = app.getRequestHandler();

app

  .prepare()
  .then(() => {

    const server = express();

    server.use(compression());
    server.use(express.static(__dirname + '/static', { maxAge: 31557600 }));

    server.get('/about', (req, res) => {
      app.render(req, res, '/about');
    });

    server.get('/post/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, apiRoute: 'post' };
      app.render(req, res, '/post', queryParams);
    });

    server.get('/page/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, apiRoute: 'page' };
      app.render(req, res, '/post', queryParams);
    });

    server.get('/city/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, taxonomy: 'city' };
      app.render(req, res, '/category', queryParams);
    });

    server.get('/country/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, taxonomy: 'country' };
      app.render(req, res, '/category', queryParams);
    });

    server.get('/_preview/:id/:wpnonce', (req, res) => {
      const queryParams = { id: req.params.id, wpnonce: req.params.wpnonce };
      app.render(req, res, '/preview', queryParams);
    });

    server.get("*", (req, res) => {
      return handle(req, res);
    });

    server.listen(process.env.NODE_PORT, err => {
      if (err) throw err;
      console.log("> Ready on port " + process.env.NODE_PORT);
    });

  })

  .catch(ex => {

    console.error(ex.stack);
    process.exit(1);

  });

عندما يتم تشغيل الخادم مع التالي ، يمكنني عرض الصفحات وعند إعادة تحميلها تعمل بشكل جيد. إذا حاولت تحميل مشاركة مدونة أو فئة/مدينة/بلد ، فستظل دائمًا 404.

هل هي مشكلة في الكود server.js أو مشكلة في صفحات React ل/post و/category؟

0
إنها تُظهر صفحة 404 المتفاعلة عندما يتم تشغيلها وإذا قمت بإيقاف خادم رد الفعل فلن يظهر أي شيء.
وأضاف المؤلف Callum, مصدر
قد يكون لديك apache أو nginx أو ما شابه يعمل على المنفذ 80. تحقق من رسائل سجل التطبيق ، إذا كانت تطبع شيئًا ما على وحدة التحكم.
وأضاف المؤلف Muhammad Adeel, مصدر
هل هو متاح بشكل علني للاختبار
وأضاف المؤلف Muhammad Adeel, مصدر

1 إجابة

تحتاج إلى تشغيل npm run build ثم npm run start . تحتاج إلى إنشاء الحزمة أولاً ، وإلا فلن يتم إنشاء صفحاتك ورمز nextjs.

وهو يعمل على التطوير لأنك لست بحاجة إلى إنشاء حزمة لـ dev ، حيث يتم الوصول إلى الشفرة مباشرة ، لكن هذا ليس فعالاً للإنتاج.

إليك الشفرة المعتادة build و start :

"build": "next build",
"start": "NODE_ENV=production node server.js",

يجب وضعها في package.json . أنت تملك بالفعل ، لأنك تقول أنك تقوم بتشغيل npm run start .

0
وأضاف