Dva: Не удается обновить при использовании browserHistory

Созданный на 15 февр. 2017  ·  25Комментарии  ·  Источник: dvajs/dva

После обновления выдается сообщение 404, как его изменить?

faq question

Самый полезный комментарий

При использовании browserHistory измените js-метод импорта html на импорт из корня.
следующим образом:
<script src="/index.js"></script>

@sorrycc может закрыть эту проблему

Все 25 Комментарий

Инструмент был заменен на туркмен .

@sorrycc
Проект, который я создал с помощью последней версии dva-cli, называется Roadhog, но у него все еще есть эта проблема.

Турбосвин специально этим занимался, теоретически такой проблемы не будет. package.json опубликовать, чтобы увидеть это?

@sorrycc
{
"частный": правда,
"scripts": {
"start": "сервер-суррогат",
"build": "строить суррогат",
"lint": "eslint --ext .js src test",
"precommit": "npm run lint"
},
"двигателей": {
"install-node": "6.9.2"
},
"dependencies": {
"animate.css": "^ 3.5.2",
"antd-mobile": "^ 0.9.14",
"babel-runtime": "^ 6.9.2",
"два": "^ 1.2.1",
"момент": "последний",
"path-to-regexp": "последний",
"qs": "последний",
"rc-form": "^ 1.3.0",
"реагировать": "^ 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",
"ожидать": "^ 1.20.2",
"хаски": "^ 0.12.0",
"redbox-react": "^ 1.3.2",
"Roadhog": "^ 0.5.2"
}
}

package.json выглядит нормально. . Вы можете попробовать dva-example-user-dashboard, чтобы узнать, есть ли проблемы. Если нет, сравните различия.

@sorrycc
Я пробовал. Пути вроде http: // localhost : 8000 / users могут быть обновлены по желанию, но если путь еще на один уровень, например http: // localhost : 8000 / users / users, вы можете только перейти по ссылке. вы его переворачиваете, вы не можете запросить его напрямую. Я пишу неправильно или в чем причина?

Я взглянул на интерфейс отладки хрома, и он сообщил о Uncaught SyntaxError: Unexpected token <

dva-example-user-dashboard имеет ту же проблему

image

Я попытался почистить это без проблем.

@sorrycc
Этот путь можно обновить, но если вы измените / users на / users / users, его нельзя будет обновить, вы можете только перейти по ссылке
wx20170216-120305 2x
wx20170216-120322 2x

Изменение истории может решить эту проблему, но # проблема в URL-адресе.
Ссылка: https://github.com/dvajs/dva-knowledgemap#Switch-history-to-browserhistory

В browserHistory не должно быть # .

@sorrycc
Вот код:

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);
  }
});

После ввода в браузере http://localhost:8000/ автоматически становится
http://localhost:8000/#/

Если вы удалите #, соответствующий путь не может быть открыт.

Я также пробовал обновлять адресную строку браузера во время многоуровневой маршрутизации: hashHistory доступен, browserHistory недоступен (загрузка по запросу)

BrowserHistory недоступен. Сообщает 404 или пустую страницу? Если страница пуста, проверьте консоль. Если js не загружен, значит, publicPath не соответствует .

При использовании browserHistory измените js-метод импорта html на импорт из корня.
следующим образом:
<script src="/index.js"></script>

@sorrycc может закрыть эту проблему

@ kairi1227
Спасибо, это действительно проблема

@ kairi1227 спасибо ~ внесено из рута, решено

Честно говоря, лучше потратить время на создание среды react + redux.

Я построил два проекта инициализации .
При разработке вы можете изменить html на / при цитировании ресурсов
После упаковки измените его на ./
Это решает проблему использования publicPath и проблему APP HD. Те, кому интересно, могут узнать.

Я также столкнулся с этой проблемой. Когда используется доменное имя второго уровня, ссылку можно использовать для перенаправления, но нельзя обновить.
Я использовал описанный выше метод и добавил '/' в файл js, но он по-прежнему недействителен.

Есть ли проблема с моей маршрутизацией?


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

@sorrycc

@sorrycc
Эта проблема была решена.
В режиме browserHistory, потому что это режим спа;
Требуется конфигурация nginx: try_files $ uri $ uri / /index.html;

@ 18559909452 Как настроить, если сервер apache вместо nginx?

Не видел методов настройки, связанных с koa, опубликуйте для справки:

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;
  })
...
Была ли эта страница полезной?
0 / 5 - 0 рейтинги