Dva: Kann nicht aktualisiert werden, wenn browserHistory verwendet wird

Erstellt am 15. Feb. 2017  ·  25Kommentare  ·  Quelle: dvajs/dva

404 wird nach der Aktualisierung gemeldet, wie soll ich es ändern?

faq question

Hilfreichster Kommentar

Wenn Sie browserHistory verwenden, ändern Sie die js-Importmethode von html so, dass sie aus dem Stammverzeichnis importiert wird.
wie folgt:
<script src="/index.js"></script>

@sorrycc kann dieses Problem schließen

Alle 25 Kommentare

Das Werkzeug wurde durch Roadhog ersetzt .

@sorrycc
Das Projekt, das ich mit der neuesten Version von dva-cli erstellt habe, ist roadhog, aber es hat immer noch dieses Problem.

Roadhog hat sich speziell damit beschäftigt, theoretisch wird es ein solches Problem nicht geben. package.json posten, um es zu sehen?

@sorrycc
{
"privat": wahr,
"Skripte": {
"start": "Roadhog-Server",
"build": "Roadhog bauen",
"lint": "eslint --ext .js src test",
"precommit": "npm run lint"
},
"Motoren": {
"install-node": "6.9.2"
},
"Abhängigkeiten": {
"animate.css": "^3.5.2",
"antd-mobile": "^0.9.14",
"babel-runtime": "^6.9.2",
"dva": "^1.2.1",
"moment": "neueste",
"path-to-regexp": "neueste",
"qs": "neueste",
"rc-form": "^1.3.0",
"reagieren": "^15.4.0",
"react-dom": "^15.4.0",
"weixin-js-sdk": "^1.2.0"
},
"devDependencies": {
"babel-eslint": "^7.1.1",
"babel-plugin-dva-hmr": "^0.3.2",
"babel-plugin-import": "^1.1.0",
"babel-plugin-transform-runtime": "^6.9.0",
"eslint": "^3.12.2",
"eslint-config-airbnb": "^13.0.0",
"eslint-plugin-import": "^2.2.0",
"eslint-plugin-jsx-a11y": "^2.2.3",
"eslint-plugin-react": "^6.8.0",
"erwarten": "^1.20.2",
"husky": "^0.12.0",
"redbox-react": "^1.3.2",
"Roadhog": "^0.5.2"
}
}

package.json sieht gut aus. . Sie können dva-example-user-dashboard ausprobieren, um

@sorrycc
Ich habe es versucht. Pfade wie http://localhost :8000/users können nach Belieben aktualisiert werden, aber wenn der Pfad eine Ebene höher ist wie http://localhost :8000/users/users, können Sie nur über Link springen Sie drehen es um, Sie können es nicht direkt anfordern. Schreibe ich falsch oder was ist der Grund?

Ich habe mir die Debugging-Oberfläche von Chrome angesehen und es wurde Uncaught SyntaxError: Unexpected token <

dva-example-user-dashboard hat das gleiche Problem

image

Ich habe versucht, dies ohne Probleme zu bürsten.

@sorrycc
Dieser Pfad kann aktualisiert werden, aber wenn Sie /users in /users/users ändern, kann er nicht aktualisiert werden, Sie können nur über Link springen
wx20170216-120305 2x
wx20170216-120322 2x

Das Ändern des Verlaufs kann dieses Problem lösen, aber es gibt ein #-Problem in der URL.
Referenz: https://github.com/dvajs/dva-knowledgemap#Switch-history-to-browserhistory

Es sollte nicht # browserHistory geben.

@sorrycc
Hier ist der Code:

import dva from 'dva';
import 'antd/dist/antd.css';
import { useRouterHistory } from 'dva/router';
import { createHashHistory } from 'history';
import message from 'antd/lib/message';

// 1. Initialize
const app = dva({
  history: useRouterHistory(createHashHistory)({ queryKey: false }),
  onError: (e) => {
    message.error(e.message);
  }
});

Nach Eingabe von http://localhost:8000/ im Browser wird es automatisch automatically
http://localhost:8000/#/

Wenn Sie # entfernen, kann der entsprechende Pfad nicht geöffnet werden.

Ich habe auch versucht, die Adressleiste des Browsers während des Multi-Level-Routings zu aktualisieren: hashHistory ist verfügbar, browserHistory ist nicht verfügbar (Laden bei Bedarf)

BrowserHistory ist nicht verfügbar. Wird 404 oder eine leere Seite gemeldet? Wenn die Seite leer ist, überprüfen Sie die Konsole. Wenn js nicht geladen ist, sollte publicPath nicht übereinstimmen .

Wenn Sie browserHistory verwenden, ändern Sie die js-Importmethode von html so, dass sie aus dem Stammverzeichnis importiert wird.
wie folgt:
<script src="/index.js"></script>

@sorrycc kann dieses Problem schließen

@kairi1227
Danke, das ist tatsächlich das Problem

@kairi1227 danke ~ von der Wurzel eingeführt, wurde gelöst

Um ehrlich zu sein, ist es besser, sich die Zeit zu nehmen, um eine React+Redux-Umgebung aufzubauen.

Ich habe ein DVA- Initialisierungsprojekt erstellt .
Beim Entwickeln können Sie HTML in / beim Zitieren von Ressourcen ändern
Ändern Sie es nach dem Verpacken in ./
Dies löst das Problem der Verwendung von publicPath und das Problem von APP HD. Interessierte können sich informieren.

Ich bin auch auf dieses Problem gestoßen: Wenn der Domainname der zweiten Ebene verwendet wird, kann Link zur Weiterleitung verwendet werden, die Aktualisierung jedoch nicht.
Ich habe die obige Methode verwendet und der js-Datei ein '/' hinzugefügt, aber sie war immer noch ungültig.

Gibt es ein Problem mit meinem Routing?


        <Route path="/" component={ CreateRelevance }>
            <Route path="bg/create" component={ CreateRelevance } />
        </Route>
   </Router>

@sorrycc

@sorrycc
Dieses Problem wurde behoben.
Im browserHistory-Modus, da es sich um Spa-Modus handelt;
Erfordert nginx-Konfiguration: try_files $uri $uri/ /index.html;

@18559909452 Wie konfiguriere Nginx ist?

Ich habe keine koa-bezogenen Konfigurationsmethoden gesehen, poste es als Referenz:

const fs = require('fs');
const router = require('koa-router')();

router.get('/*', async (ctx) => {
    const html = fs.readFileSync(path.resolve(filePath));
    ctx.type = 'html';
    ctx.body = html;
  })
...
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen