第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Express API 和 ReactJS SPA 進行路由

使用 Express API 和 ReactJS SPA 進行路由

qq_笑_17 2021-12-02 16:54:16
我最近在 Heroku 上使用 React 部署了一個站點。在瀏覽器的控制臺中,我收到了 html 文本的輸出,而不是我的用戶界面 javascript。鏈接到我的站點 鏈接到存儲庫我認為問題根源于我的 server.js 路由來為我的 index.html 提供服務服務器.js// Allows us to place keys and sensitive info in hidden .env filerequire("dotenv").config();// Require Packagesconst express = require("express");const app = express();const morgan = require("morgan")const db = require("./models");const routes = require("./routes");const passport = require("passport");const session = require("express-session")const path = require("path");const MySQLStore = require("express-mysql-session")(session);require("./config/passport")(passport)app.use(express.urlencoded({ extended: true }));app.use(express.json());let options = {};if (process.env.NODE_ENV === 'production') {    options = {        host: process.env.HOST,        port: 3306,        user: process.env.USER,        password: process.env.PASSWORD,        database: process.env.DB    }} else {    options = {        host: 'localhost',        port: 3306,        user: 'root',        password: process.env.DB_PASSWORD,        database: 'tracker'    }}// Options for mysql session storelet sessionStore = new MySQLStore(options);// Pass in mysql session storeapp.use(session({    key: 'surfing_dogs',    secret: 'surfing_dogs',    store: sessionStore,    resave: false,    saveUninitialized: false}))app.use(passport.initialize());app.use(passport.session());app.use(morgan('common'))// THIS IS REALLY IMPORTANT FOR ROUTING CLIENT SIDE// We want to have our app to use the build directory app.use(express.static(__dirname + '/client/build'))// For every url request we send our index.html file to the routeapp.get("/*", (req, res) => {    res.sendFile(path.join(__dirname, "client", "build", "index.html"));});app.use(routes)詳細說明,我將此路由放置在我的 server.js 中,因為我有客戶端路由,并且我想欺騙瀏覽器始終為 index.html 提供服務我想解決這個問題的另一個原因是我目前無法使用憑據登錄我的網站。這是前端明智的登錄過程的一小部分。我的目標是基于登錄狀態(tài),但不幸的是登錄狀態(tài)沒有改變。
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

查看您的 server.js 存儲庫后,您將所有到達服務器的流量(甚至是您自己的 api 請求)發(fā)送到前端。


首先確保您的服務器端路由以可區(qū)分的內容開頭,例如


app.get('/api/*',(req,res)=>/*somecode*/)

這是因為您的服務器會混淆諸如“/login”之類的東西,如果它也是您前端的一條路由,并且最終只會根據定義它們的時間來服務一個或另一個。


然后更新你的 server.js 以匹配它,它應該可以工作:


//API Requests handled first

require('./routes')(app);


//Non api requests in production

if (process.env.NODE_ENV === 'production') {

    app.use([someProductionMiddleware()])

    // Express will serve up production assets i.e. main.js

    app.use(express.static('client/build'));

    // If Express doesn't recognize route serve index.html

    const path = require('path');

    app.get('*', (req, res) => {

        res.sendFile(

            path.resolve(__dirname, 'client', 'build', 'index.html')

        );

    });

}


查看完整回答
反對 回復 2021-12-02
  • 1 回答
  • 0 關注
  • 227 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號