Dva: Impossible d'actualiser lors de l'utilisation de browserHistory

Créé le 15 févr. 2017  ·  25Commentaires  ·  Source: dvajs/dva

404 est signalé après actualisation, comment dois-je le changer ?

faq question

Commentaire le plus utile

Lorsque vous utilisez browserHistory, modifiez la méthode d'importation js de html pour importer à partir de la racine.
comme suit:
<script src="/index.js"></script>

@désolé peut résoudre ce problème

Tous les 25 commentaires

L'outil a été remplacé par roadhog .

@désolé
Le projet que j'ai créé avec la dernière version de dva-cli est roadhog, mais il a toujours ce problème.

Roadhog s'en est occupé spécifiquement. En théorie, il n'y aura pas de problème de ce genre. package.json publier pour le voir ?

@désolé
{
"privé": vrai,
"scripts": {
"start": "serveur roadhog",
"build": "roadhog build",
"lint": "eslint --ext .js src test",
"precommit": "npm run lint"
},
"moteurs": {
"install-node": "6.9.2"
},
"dépendances": {
"animer.css": "^3.5.2",
"antd-mobile": "^0.9.14",
"babel-runtime": "^6.9.2",
"dva": "^1.2.1",
"moment": "dernier",
"path-to-regexp": "latest",
"qs": "dernier",
"rc-form": "^1.3.0",
"react": "^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",
"attendez": "^1.20.2",
"husky": "^0.12.0",
"redbox-react": "^1.3.2",
"roadhog": "^0.5.2"
}
}

package.json semble correct. . Vous pouvez essayer dva-example-user-dashboard pour voir s'il y a un problème. S'il n'y a pas de problème, comparez les différences.

@désolé
Je l'ai essayé. Des chemins comme http://localhost :8000/users peuvent être actualisés à volonté, mais si le chemin est un niveau de plus comme http://localhost :8000/users/users, vous ne pouvez passer que par Link. Si vous le retournez, vous ne pouvez pas le demander directement. Mon écriture est-elle fausse ou quelle en est la raison ?

J'ai jeté un œil à l'interface de débogage de chrome, et elle a signalé Uncaught SyntaxError: Unexpected token <

dva-example-user-dashboard a le même problème

image

J'ai essayé de le brosser sans problème.

@désolé
Ce chemin peut être actualisé, mais si vous remplacez /users par /users/users, il ne peut pas être actualisé, vous ne pouvez que passer par Link
wx20170216-120305 2x
wx20170216-120322 2x

La modification de l'historique peut résoudre ce problème, mais il existe un # problème dans l'URL.
Référence : https://github.com/dvajs/dva-knowledgemap#Switch-history-to-browserhistory

Il ne devrait pas y avoir de # browserHistory.

@désolé
Voici le 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);
  }
});

Après avoir entré http://localhost:8000/ dans le navigateur, il devient automatiquement
http://localhost:8000/#/

Si vous supprimez #, le chemin correspondant ne peut pas être ouvert.

J'ai également essayé d'actualiser la barre d'adresse du navigateur pendant le routage à plusieurs niveaux : hashHistory est disponible, browserHistory n'est pas disponible (chargement à la demande)

BrowserHistory n'est pas disponible. Signale-t-il 404 ou une page vierge ? Si la page est vierge, vérifiez la console. Si js n'est pas chargé, cela signifie que

Lorsque vous utilisez browserHistory, modifiez la méthode d'importation js de html pour importer à partir de la racine.
comme suit:
<script src="/index.js"></script>

@désolé peut résoudre ce problème

@kairi1227
Merci c'est bien le problème

@ kairi1227 merci ~ introduit à partir de la racine, a été résolu

Pour être honnête, il vaut mieux prendre le temps de construire un environnement react+redux.

J'ai construit un projet d'initialisation dva.
Lors du développement, vous pouvez modifier le html vers / lors de la citation des ressources
Après l'emballage, modifiez-le en ./
Cela résout le problème de l'utilisation de publicPath et le problème de l'APP HD. Ceux qui sont intéressés peuvent le découvrir.

J'ai également rencontré ce problème.Lorsque le nom de domaine de deuxième niveau est utilisé, Link peut être utilisé pour rediriger, mais pas l'actualisation.
J'ai utilisé la méthode ci-dessus et ajouté un '/' au fichier js, mais il n'était toujours pas valide.

Y a-t-il un problème avec mon routage?


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

@désolé

@désolé
Ce problème a été résolu.
En mode browserHistory, car c'est le mode spa ;
Nécessite une configuration nginx : try_files $uri $uri/ /index.html ;

@18559909452 Comment configurer si le serveur est Apache au lieu de Nginx ?

Je n'ai pas vu les méthodes de configuration liées à koa, postez-les pour référence :

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;
  })
...
Cette page vous a été utile?
0 / 5 - 0 notes