Electron: Fehler beim Laden der Ressource: net::ERR_FILE_NOT_FOUND file:///D:/css/app.css

Erstellt am 25. Mai 2015  ·  26Kommentare  ·  Quelle: electron/electron

Ich habe eine solche Struktur in der Anwendung:
file struct

Ich schreibe im Kopf meine index.html:

<link rel="stylesheet" href="css/app.css"/>

Führen Sie Elektron aus und erhalten Sie einen Fehler:

capture
Fehler beim Laden der Ressource: net::ERR_FILE_NOT_FOUND file:///D:/css/app.css
Bitte alle, sagt mir, wie soll ich den Pfad zur Datei einstellen?

Hilfreichster Kommentar

Wenn dies auftritt, wenn <base href="/"> in der index.html vorhanden ist, ersetzen Sie es einfach durch <base href="./"> .

Alle 26 Kommentare

Verwandte Ausgabe: #1747.

Versuchen Sie dies als alternative Möglichkeit, dieses Pfadproblem zu umgehen:

<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 Danke für den Ausschnitt.
Ich bekomme eine Fehlermeldung, weil die Verwendung von <base href="/">, ohne dass dieser Fehler nicht auftritt.
Beispielarbeit https://github.com/RinatMullayanov/angular-boilerplate Branch Electron .

Habe das gleiche Problem auch. Electron versucht, Ressourcen von C:/ zu laden, relative Pfade funktionieren nicht.
Das Festlegen des vollständigen Pfads ist keine Option, Dateien werden nicht geladen, wenn wir die Anwendung auf einem anderen Pfad platzieren.

Ich habe das gleiche Problem, eine Schriftart zu bekommen

Ich habe dies zu meinem CSS hinzugefügt
<strong i="7">@import</strong> url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
Ich habe sogar versucht, dies zu meinem HTML hinzuzufügen:
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" />

Ich habe auch probiert:

<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" />

aber ich bekomme diesen Fehler:
Failed to load resource: net::ERR_CONNECTION_REFUSED

Wenn dies auftritt, wenn <base href="/"> in der index.html vorhanden ist, ersetzen Sie es einfach durch <base href="./"> .

@Myrga, du bist ein Lebensretter. Ich suche jetzt seit 5 Tagen nach einer Antwort, kein Dokument dazu, bis ich auf diesen alten Beitrag gestoßen bin. Danke vielmals

ps: Wenn Sie hierher gekommen sind und create-react-app verwenden, versuchen Sie, "homepage": "./", in Ihre package.json einzufügen. (Obwohl dies anscheinend derzeit nicht unterstützt wird, können Sie andere Probleme mit Schriftarten und dergleichen haben, die möglicherweise das Verschieben dieser Assets in Ihren /public-Ordner erfordern.)

Vielen Dank

@BesatZardosht Du hast einen Tippfehler in deiner URL:

<link rel="stylesheet" type="text/css" href="https//fonts.googleapis.com/css?family=Open+Sans" />

sollte sein:

<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans" />

(beachte die : )

Falls Sie hier sind und das gleiche Problem mit Webpack 2.x , React und/oder Redux , besteht die Möglichkeit, dass dies Ihr Problem löst:

Durchsuchen Sie Ihr Projektverzeichnis nach "publicPath" und ändern Sie seinen Wert von / in ./
Mit all den verschiedenen verfügbaren Boilerplates kann diese Einstellung an verschiedenen Orten gefunden werden. In meinem Fall mit redux-cli , das redux-starter-kit , war es in den project.config.js :

publicPath: './',

Auch wenn Sie für Electron Sie möglicherweise die Webpack-Eigenschaft target hinzufügen/ändern.
Bleib Fröhlich!! 😄

Hatte das gleiche Problem, die Lösung von Myrga hat funktioniert. Ich denke muss / als globales Root-Verzeichnis für den PC berücksichtigen, wenn das Dateiprotokoll verwendet wird. Während "./" als relativer Verweis auf den aktuellen Ordner fungiert. Nur eine Vermutung, bei Verwendung des http://-Protokolls auf Port 4200 (wo ich meine Angular4-App bediene) funktioniert alles mit "/". Für das Dateiprotokoll muss "./" verwendet werden

Ich habe mich entschieden, meine Bewerbung in React neu zu erstellen. Nachdem ich meinem Projekt File-Loader hinzugefügt hatte, bekam ich dieses Problem wieder. Das Ändern der publicPath-Eigenschaft in webpack.config.js in einen relativen Pfad (für mich ./app/ statt /app/) hat das Problem behoben.

PS scheint, dass der Dev-Server das hasst. Wenn Sie diese Änderung vornehmen und einen Webpack-Entwicklungsserver ausführen möchten, wird diese Änderung sie verwirren. Sie müssen hin und her wechseln, wenn Sie direkt im Electron und auf dem Dev-Server arbeiten (Der Grund, warum ich dies mache, ist CSS-Arbeit, ich finde den Dev-Server schneller und stabiler)

Sie können die HTML-Datei als "als Webseite speichern" speichern und dann versuchen, sie in Chrome zu öffnen.
Das hat bei mir funktioniert.

So lösen Sie " Ressource konnte nicht geladen werden: net::ERR_FILE_NOT_FOUND "
Immer wenn ich ein Bild mit "CSS" hinzufüge, wird dieser Fehler ausgegeben. Habt ihr eine Lösung dafür???
nicht nur das Bild, sondern auch die Dateien wie die Schriftartdatei, es gibt den gleichen Fehler.

@Tahawahid @RinatMullayanov
Dies liegt daran, dass alle Dateien vom lokalen Dateisystem und nicht vom relativen App-Pfad bereitgestellt werden.
Die Lösung besteht darin, das Dateiprotokoll abzufangen. Nehmen Sie die folgenden Änderungen in der Datei main.js vor

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 */ })

ein

@Tahawahid @RinatMullayanov
Dies liegt daran, dass alle Dateien vom lokalen Dateisystem und nicht vom relativen App-Pfad bereitgestellt werden.
Die Lösung besteht darin, das Dateiprotokoll abzufangen. Nehmen Sie die folgenden Änderungen in der Datei main.js vor

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 */ })

Ich

Pfadproblem. Browser durchsuchen Ihre Datei in D:/css/app.css. Dies liegt daran, dass irgendwo in Ihrem Code ein falscher Pfad erwähnt wurde. Wenn Sie einen Pfad wie /css/... erhalten, wird in D:/ gesucht.

Dies hat auch funktioniert. Danke an Herrn @itsaakashpatel für den Einblick.

// ...
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) 
) 
// ...

Ersetzen Sie einfach htmlRootDir und/oder indexFile für Ihre Erwartungen.
_Unter Linux getestet_

@Myrga Danke, dass du meinen Tag

@Myrga Nun , du würdest wahrscheinlich "homepage": "./" in package.json anstatt diese Dinge hart zu codieren.

@Myrga Nun , du würdest wahrscheinlich "homepage": "./" in package.json anstatt diese Dinge hart zu codieren.

Bitte @defusioner , gibt es dazu ein Dokument?

@leodutra humm, ich verwende https://create-react-app.dev/docs/deployment#building -for-relative-paths

@defusioner Hum, das erklärt vieles.
Sieht so aus, als ob dies nicht auf der Elektronenebene ist, sondern eher eine Homepage für React- Apps, bei der dies das Standard-Root für jeden relativen oder Root-Link ersetzt.

In meinem Fall wird dies bei Verwendung eines Vue.js-Dist- oder Raw-Elektrons wahrscheinlich nicht funktionieren.

Ich denke, dieser Paketansatz sollte in Betracht gezogen werden ... wie einige electronBasePath auf package.json

Ich finde das win.loadFile('index.html') wie eine Scheiße! Nachdem wir es mit electron-builder in eine EXE-Datei kompiliert haben. Es wird immer DevTools failed to load SourceMap: Could not load content for file:///C:/User..../resources/app.asar/bootstrap.min.css.map .

Aber das win.loadURL() funktioniert gut.

Ich habe 8 Stunden damit verbracht, herauszufinden, dass dies ein Fehler ist, den ich nicht lösen kann.

Dann wurde mir klar, dass dieser Fehler nicht wichtig ist, da die Kartendatei tatsächlich importiert wird.

Für mich wurde der eigentliche Fehler durch alert() : https://stackoverflow.com/questions/56805920/cant-edit-input-text-field-after-window-alert

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

diracdeltas picture diracdeltas  ·  3Kommentare

dangan-ronpa picture dangan-ronpa  ·  3Kommentare

reggi picture reggi  ·  3Kommentare

chonsser picture chonsser  ·  3Kommentare

cniaulin picture cniaulin  ·  3Kommentare