Dva: browserHistory使用時に更新できません

作成日 2017年02月15日  ·  25コメント  ·  ソース: dvajs/dva

更新後に404が報告されますが、どのように変更すればよいですか?

faq question

最も参考になるコメント

browserHistoryを使用する場合は、htmlのjsインポートメソッドをルートからインポートするように変更してください。
次のように:
<script src="/index.js"></script>

@sorryccはこの問題を解決できます

全てのコメント25件

ツールはroadhogに置き換えられ

@sorrycc
最新バージョンのdva-cliで作成したプロジェクトはroadhogですが、それでもこの問題があります。

Roadhogは特にそれを扱っています。理論的には、そのような問題はありません。 package.json投稿してご覧ください。

@sorrycc
{{
「プライベート」:true、
「スクリプト」:{
"start": "roadhog server"、
"ビルド": "ロードホッグビルド"、
"lint": "eslint --ext .js src test"、
"precommit": "npm run lint"
}、
「エンジン」:{
"install-node": "6.9.2"
}、
「依存関係」:{
"animate.css": "^ 3.5.2"、
"antd-mobile": "^ 0.9.14"、
"babel-runtime": "^ 6.9.2"、
"dva": "^ 1.2.1"、
「瞬間」:「最新」、
"path-to-regexp": "latest"、
"qs": "最新"、
"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"、
"期待する": "^ 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のようにもう1つのレベルの場合は、リンクを介してのみジャンプできます。裏返すと、直接リクエストすることはできません。私の文章が間違っているのですか、それとも理由は何ですか?

Chromeのデバッグインターフェイスを調べたところ、Uncaught SyntaxError:Unexpected token <が報告されました。

dva-example-user-dashboardにも同じ問題があります

image

これを問題なくブラッシングしてみました。

@sorrycc
このパスは更新できますが、/ usersを/ users / usersに変更すると、更新できず、リンクをジャンプすることしかできません。
wx20170216-120305 2x
wx20170216-120322 2x

履歴を変更することでこの問題を解決できますが、URLに#問題があります。
参照: https

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がロードされていない場合は、

browserHistoryを使用する場合は、htmlのjsインポートメソッドをルートからインポートするように変更してください。
次のように:
<script src="/index.js"></script>

@sorryccはこの問題を解決できます

@ kairi1227
おかげで、それは確かに問題です

@ kairi1227ありがとう〜ルートから導入され、解決されました

正直なところ、時間をかけてreact + redux環境を構築することをお勧めします。

dva初期化プロジェクトをビルドしました。
開発時に、リソースを引用するときにhtmlを/に変更できます
パッケージ化したら、。/に変更します。
これにより、publicPathの使用方法の問題とAPPHDの問題が解決されます。興味のある方はご覧ください。

この問題も発生しました。セカンドレベルドメイン名を使用すると、リンクを使用してリダイレクトできますが、更新はできません。
上記の方法を使用して、jsファイルに「/」を追加しましたが、それでも無効でした。

ルーティングに問題はありますか?


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

@sorrycc

@sorrycc
この問題は解決されました。
browserHistoryモードでは、スパモードであるため。
nginx構成が必要です:try_files $ uri $ uri / /index.html;

@ 18559909452サーバーがnginxではなくApacheであるかどうかを構成するにはどうすればよいですか?

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 評価