私はアプリケーションにそのような構造を持っています:
私は自分のindex.htmlを頭に書きます:
<link rel="stylesheet" href="css/app.css"/>
電子を実行してエラーを取得します。
リソースの読み込みに失敗しました:net :: ERR_FILE_NOT_FOUND file:/// D:/css/app.css
皆さん、教えてください。ファイルへのパスをどのように設定すればよいですか?
関連する問題:#1747。
このパスの問題を回避する別の方法として、これを試してください。
<html>
<head>
<title></title>
</head>
<body>
<script>
var link = document.createElement('link')
link.setAttribute('rel', 'stylesheet')
link.setAttribute('href', require('path').join(__dirname, 'css', 'app.css'))
document.head.appendChild(link)
</script>
</body>
</html>
@shamaスニペットをありがとう。
<base href = "/">を使用すると、このエラーが発生しないため、エラーが発生します。
サンプル作業https://github.com/RinatMullayanov/angular-boilerplateブランチ電子。
同じ問題があります。 ElectronはC:/からリソースを読み込もうとしますが、相対パスは機能していません。
フルパスを設定することはオプションではありません。アプリケーションを別のパスに配置すると、ファイルは読み込まれません。
フォントを取得するのと同じ問題があります
これをCSSに追加しました<strong i="7">@import</strong> url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
私はこれを私のhtmlに追加しようとさえしました:
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" />
私も試しました:
<link rel="stylesheet" type="text/css" href="http//fonts.googleapis.com/css?family=Open+Sans" />
<link rel="stylesheet" type="text/css" href="https//fonts.googleapis.com/css?family=Open+Sans" />
しかし、私はこのエラーを受け取ります:
Failed to load resource: net::ERR_CONNECTION_REFUSED
持ったときにこれが発生した場合は<base href="/">
index.htmlの中で、ただでそれを置き換える<base href="./">
。
@Myrgaあなたは命の
ps:ここに来てcreate-react-appを使用している場合は、package.jsonに"homepage": "./",
を入れてみてください。 (明らかにこれは現在サポートされていないため、フォントなどで他の問題が発生する可能性があり、それらのアセットを/ publicフォルダーに移動する必要がある場合があります)
どうもありがとうございます
@BesatZardosht URLにタイプミスがあります:
<link rel="stylesheet" type="text/css" href="https//fonts.googleapis.com/css?family=Open+Sans" />
する必要があります:
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans" />
( :
注意してください)
Webpack 2.x
、 React
、および/またはRedux
を使用して同じ問題が発生している場合は、これで問題が解決する可能性があります。
プロジェクトディレクトリで「publicPath」を検索し、その値を
/
から./
すべての異なる可能なボイラープレートと、この設定は使用して私の場合は、別の場所に見つけることができるredux-cli
使用するredux-starter-kit
、それがにあったproject.config.js
:
publicPath: './',
また、 Electron
ビルドしている場合は、Webpack target
プロパティを追加/変更する必要がある場合があります。
しあわせでいる!! 😄
同じ問題がありましたが、Myrgaのソリューションは機能しました。 私が思うに
Reactでアプリケーションを作り直すことにしました。 プロジェクトにファイルローダーを追加すると、この問題が再び発生し始めました。 webpack.config.jsのpublicPathプロパティを相対パス(私にとっては/ app /ではなく./app/)に変更すると、問題が修正されました。
PSは開発サーバーがこれを嫌っているようです。 この変更を行い、webpack開発サーバーを実行したい場合、この変更は混乱を招きます。 電子で直接作業することと開発サーバーで作業することから移行するときに、前後に切り替える必要があります(これを行う理由は、css作業を行うためであり、開発サーバーがより高速で安定していることがわかります)
HTMLファイルを「Webページとして保存」として保存してから、Chromeで開こうとすることができます。
これは私のために働いた。
「リソースのロードに失敗しました:net :: ERR_FILE_NOT_FOUND 」の解決方法
「CSS」を使用して画像を追加すると、このエラーがスローされ
画像だけでなく、フォントファイルなどのファイルでも同じエラーが発生します。
@Tahawahid @RinatMullayanov
これは、すべてのファイルが相対的なアプリパスではなくローカルファイルシステムから提供されているためです。
解決策は、ファイルプロトコルを傍受することです。 main.jsファイルで次の変更を行います
mainWindow = new BrowserWindow({width: 1100, height: 700, icon: __dirname + '/icon.ico'})
mainWindow.loadURL(url.format({
pathname:'index.html',
protocol: 'file',
slashes: true
}))
app.on('ready', () => {
protocol.interceptFileProtocol('file', (request, callback) => {
const url = request.url.substr(7) /* all urls start with 'file://' */
callback({ path: path.normalize(
$ {__ dirname} / $ {url} )})
}, (err) => {
if (err) console.error('Failed to register protocol')
})
createWindow() /* callback function */
})
NS
@Tahawahid @RinatMullayanov
これは、すべてのファイルが相対的なアプリパスではなくローカルファイルシステムから提供されているためです。
解決策は、ファイルプロトコルを傍受することです。 main.jsファイルで次の変更を行いますMain.js
mainWindow = new BrowserWindow({width: 1100, height: 700, icon: __dirname + '/icon.ico'}) mainWindow.loadURL(url.format({ pathname:'index.html', protocol: 'file', slashes: true }))
app.on('ready', () => { protocol.interceptFileProtocol('file', (request, callback) => { const url = request.url.substr(7) /* all urls start with 'file://' */ callback({ path: path.normalize(
$ {__ dirname} / $ {url})}) }, (err) => { if (err) console.error('Failed to register protocol') }) createWindow() /* callback function */ })
?
パスの問題。 ブラウザはD:/css/app.cssでファイルを検索します。 これは、コードのどこかで間違ったパスについて言及しているためです。 / css / ...のようなパスが与えられた場合、これはD:/で検索されます
これもトリックを行いました。 洞察を与えてくれた@itsaakashpatel氏に感謝します。
// ...
const { protocol } = require('electron')
// ...
// run the next block right before <BrowserWindow>.loadFile()
const htmlRootDir = 'dist/'
const indexFile = 'index.html'
protocol.interceptFileProtocol(
'file',
(request, callback) => {
const url = request.url.substr(7) // strip "file://" out of all urls
if (request.url.endsWith(indexFile)) {
callback({ path: url })
} else {
callback({ path: path.normalize(`${__dirname}/${htmlRootDir}/${url}`) })
}
},
error => console.error(error)
)
// ...
期待どおりにhtmlRootDir
および/またはindexFile
を置き換えるだけです。
_Linuxでテスト済み_
@Myrga私の一日を救ってくれてありがとう。 あなたの答えを追加しました:)
さて、あなたはおそらく設定します@Myrga "homepage": "./"
でpackage.json
の代わりにハードコーディングこれらの事。
さて、あなたはおそらく設定します@Myrga
"homepage": "./"
でpackage.json
の代わりにハードコーディングこれらの事。
@defusionerをお願いし
@leodutraうーん、私はreact-craを使用していて、そのような構成を生成できます:
@defusionerうーん、それは多くのことを説明しています。
これは電子レベルではないようです。これはreactアプリのホームページであり、相対リンクまたはルートリンクのデフォルトのルートに置き換わります。
私の場合、Vue.jsのdistまたは生の電子を使用すると、これはおそらく機能しません。
このパッケージアプローチを考慮に入れる必要があると思います... package.jsonのelectronBasePath
に
win.loadFile('index.html')
はたわごとのようなものだと思います! electron-builder
を使用してEXEファイルにコンパイルした後。 常にDevTools failed to load SourceMap: Could not load content for file:///C:/User..../resources/app.asar/bootstrap.min.css.map
表示されます。
しかし、 win.loadURL()
はうまく機能します。
私はこれが私が解決できないバグであることを見つけるために8時間を費やしました。
次に、マップファイルが実際にインポートされるため、このバグは重要ではないことに気付きました。
私にとって、本当のバグはalert()
によって引き起こされました: https :
最も参考になるコメント
持ったときにこれが発生した場合は
<base href="/">
index.htmlの中で、ただでそれを置き換える<base href="./">
。