最初のReact webappに_react-router
_を設定しようとしています。ページを更新するときにネストされたページのcssが読み込まれないことを除いて、機能しているようです。
ただし、それは1つのレベル、たとえば_/dashboard
_に対してのみ機能しますが、CSSは_/components/timer
_に対してロードされません
_index.jsx
_ファイルは次のようになります
_import './assets/plugins/morris/morris.css';
import './assets/css/bootstrap.min.css';
import './assets/css/core.css';
import './assets/css/components.css';
import './assets/css/icons.css';
import './assets/css/pages.css';
import './assets/css/menu.css';
import './assets/css/responsive.css';
render(
<Router history={browserHistory}>
<Route path="/" component={Dashboard}/>
<Route path="/components/:name" component={WidgetComponent}/>
<Route path="*" component={Dashboard}/>
</Router>,
document.getElementById('root')
);
_
なぜか?
私もこの問題を抱えていました。私のアプリがスタイルシートなどをロードしていませんでした。ただし、アセットをindex.html
エントリポイントに直接インポートしていました。
このドキュメント に従ってリンクを絶対パスに置き換えることで、私の問題は解決しました。
私にとって、これは変化することを意味しました
<head>
<link rel="stylesheet" href="./style.css" ></link>
</head>
これに:
<head>
<link rel="stylesheet" href="/style.css" ></link>
</head>
同じことがあなたのインポートステートメントでうまくいくかどうかはわかりませんが、一撃の価値はあります。
参考までに、create-react-app
のプロジェクトレイアウトを使用しています。
それを見つけた!
HTML要素を追加します。
<base href="/" /> <!-- for local Host -->
インデックスページに追加して、URLのベースケースを設定します。
Create-react-appワークフローを使用している場合は、アセットをパブリックフォルダーに配置し、特別な変数PUBLIC_URLを使用します。
Index.html内で%PUBLIC_URL%を使用:
_<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
_
JS/JSXファイル内では、process.env.PUBLIC_URLを使用します。
render() { // Note: this is an escape hatch and should be used sparingly! // Normally we recommend using import for getting asset URLs // as described in “Adding Images and Fonts” above this section. return <img src={process.env.PUBLIC_URL + '/img/logo.png'} />; }
推奨されるアプローチ:
スタイルシート、画像、フォントをJavaScriptからインポートして、srcファイルと一緒に配置します。
_import React from 'react';
import logo from './logo.png'; // Tell Webpack this JS file uses this image
console.log(logo); // /logo.84287d09.png
function Header() {
// Import result is the URL of your image
return <img src={logo} alt="Logo" />;
}
export default Header;
_
追加した
<base href="/" /> <!-- for local Host -->
私のindex.html頭に
そしてそれは解決されます。
私は少し古いスレッドを知っていますが、私の解決策をここで共有することはできません。 _create-react-app
_の代わりにwebpack
を使用するセットアップのソリューションです。
他のすべての解決策がHTMLファイルの_<link
_パスを変更することを提案しているのを見つけました。しかし、私の場合と同様に、webpack
はアセットのリンクを処理します。
今日も同じ問題に直面しました。 _/some_route
_のようなルートは機能しますが、_/some_route/second_level
_は機能せず、コンソールに次のメッセージを残します-
_Refused to apply style from 'http://localhost:8080/some_route/some_style.css'
_。
_webpack.config.js
_ファイルを更新してこの問題を修正しました
_output: {
filename: 'build.js',
path: path.join(__dirname, '/dist'),
publicPath: '/', ////// <-- By adding this line
}
_
それが誰かを助けることを願っています。ありがとう!
404エラーのため、スクリプトはCSSをロードしていません。ウェブサーバーがすべてをリダイレクトしていません/components/*
インデックスファイルをリクエストし、reactを介してビューにルーティングします。
しかし、今、具体的にはcssの問題を修正することについて...以前は、jsxファイルでのcssのインポートに苦労していたので、あなただけではありません:)代わりに、SASSまたはLESSを使用してcssをコンパイルすることを選択しましたbundle.css
gruntまたはgulpを含むファイル。次に、それをロードしますbundle.css
直接私のindex.html
ファイル。 CSSコンパイラの使用に関する1つのきちんとしたトリックは、.scssまたは.lessファイルを変更するたびに、bundle.css
が更新されます。
私があなたを正しい方向に向けたといいのですが。
乾杯、