404 est signalé après actualisation, comment dois-je le changer ?
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
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
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;
})
...
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