Реактивные маршруты аутентификации не работают в производственной сборке (NodeJS) - PullRequest
0 голосов
/ 03 декабря 2018

Мое приложение использует экспресс-/ nodejs-бэкэнд и responsejs-интерфейс.

Всякий раз, когда я захожу в маршруты входа в систему / выхода из системы (т. Е. Нажимаю на / auth-outlook и т. Д.) В моей производственной сборке приложения, маршрут будет обновляться в строке поиска, но не будет обновлять фактический маршрут приложения.

Вот мой rout.js :

module.exports = app => {
  app.get('*', (req, res)=>{
    res.sendFile(path.join(__dirname, "../client/build/index.html"));
  });
  app.get("/api/logout", (req, res) => {
    req.logout();
    res.redirect("/");
  });

  app.get("/api/current_user", (req, res) => {
    res.send(req.user);
  });
  app.get(
    "/auth/outlook",
    passport.authenticate("windowslive", {
      scope: [
        "openid",
        "profile",
        "offline_access",
        "https://outlook.office.com/Mail.Read"
      ]
    })
  );
  app.get("/authorize-outlook", passport.authenticate("windowslive"), function(
    req,
    res
  ) {
    res.redirect("/");
  });
};

Мой server.js имеет следующие строки:

app.use(express.static(path.join(__dirname, 'client/build')));
require("./routes/authRoutes")(app);

Я упустил вызовы SQL в моем файле маршрутов для ясности.

Это приложение работает на 100% так, как задумано, когда оно запускает свою версию разработки (то есть npm run start и nodemon server.js отдельно).

Базовая файловая структура проекта:

  1. клиент /
  2. маршруты /
  3. authRoutes.js
server.js

TLDR: маршруты аутентификации приложений не работают в производственной сборке моего проекта, но работают в разработкестроить.

Любая информация, которая может помочь, с благодарностью.

РЕДАКТИРОВАТЬ:

Вот пример использования React с backend:

import React from 'react';
import Particles from 'react-particles-js';
import '../styles/landing.css';

const params = {
  particles: {
    number: {
      value: 100,
      density: {
        enable: true,
        value_area: 800
      }
    },
    color: {
      value: '#cccccc'
    },
    shape: {
      type: 'circle',
      stroke: {
        width: 0,
        color: '#cccccc'
      },
      polygon: {
        nb_sides: 5
      }
    },
    opacity: {
      value: 0.5,
      random: false,
      anim: {
        enable: false,
        speed: 1,
        opacity_min: 0.1,
        sync: false
      }
    },
    size: {
      value: 3,
      random: true,
      anim: {
        enable: false,
        speed: 40,
        size_min: 0.1,
        sync: false
      }
    },
    line_linked: {
      enable: true,
      distance: 150,
      color: '#cccccc',
      opacity: 0.4,
      width: 1
    },
    move: {
      enable: true,
      speed: 6,
      direction: 'none',
      random: false,
      straight: false,
      out_mode: 'out',
      bounce: false,
      attract: {
        enable: false,
        rotateX: 600,
        rotateY: 1200
      }
    }
  },
  interactivity: {
    detect_on: 'canvas',
    events: {
      onhover: {
        enable: true,
        mode: 'repulse'
      },
      onclick: {
        enable: true,
        mode: 'push'
      },
      resize: true
    },
    modes: {
      grab: {
        distance: 400,
        line_linked: {
          opacity: 1
        }
      },
      bubble: {
        distance: 400,
        size: 40,
        duration: 2,
        opacity: 8,
        speed: 3
      },
      repulse: {
        distance: 200,
        duration: 0.4
      },
      push: {
        particles_nb: 4
      },
      remove: {
        particles_nb: 2
      }
    }
  }
};

const Testing = () => (
  <div style={{ height: '100vh' }}>
    <div id="particles">
      <Particles
        params={params}
        style={{
          background:
            'linear-gradient(90deg, rgba(136,133,191,1) 0%, rgba(19,155,166,1) 45%, rgba(0,212,255,1) 100%)',
          padding: '0!important'
        }}
      />
      <div className="centered">
        <h1 className="headingLg">TQS Travel</h1>
        <p>
          Travel, made <i>easy</i>.
        </p>
        <div
          className="btn-group center"
          role="group"
          aria-label="Basic example"
        >
          <button
            type="button"
            className="btn btn-light btn-lg"
            style={{ marginRight: 10, color: 'black', width: 150 }}
          >
            <a
              className="nav-link"
              href="/auth/outlook"
              style={{ color: 'black' }}
            >
              Login
            </a>
          </button>
          <button type="button" className="btn btn-secondary btn-lg">
            Request Access
          </button>
        </div>
      </div>
    </div>
  </div>
);

export default Testing;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...