I’m using electron-forge and can’t figure out how to make paths relative to build.
Following snippet works in development mode, but not in productions mode.
<!DOCTYPE html>
<html lang="en" data-color-scheme="auto">
<head>
<link
rel="preload"
href="/c5c3959c04004102ea46.woff2"
as="font"
crossorigin="anonymous"
/>
<link
rel="preload"
href="/535bc89d4af715503b01.woff2"
as="font"
crossorigin="anonymous"
/>
<meta charset="utf-8" />
<title>Test app</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
These are the errors thrown:
index.html:1 GET file:///c5c3959c04004102ea46.woff2 net::ERR_FILE_NOT_FOUND
index.html:1 GET file:///535bc89d4af715503b01.woff2 net::ERR_FILE_NOT_FOUND
Thanks for helping out!
As your Electron application will be built in a different directory, run by your user(s) on any drive in any directory on any OS of their choosing, reference to file paths must be relative (not absolute).
Below are examples of what your <link>
href
would look like depending on a typical directory structure.
Flat render-process
directory structure.
Project Root
├── src
| ├── main-process
| └── render-process
| ├── index.html
| ├── c5c3959c04004102ea46.woff2
| └── 535bc89d4af715503b01.woff2
└── package.json
index.html
(render process)
<link rel="preload" href="c5c3959c04004102ea46.woff2" as="font" crossorigin="anonymous" />
<link rel="preload" href="535bc89d4af715503b01.woff2" as="font" crossorigin="anonymous" />
Downwards render-process
directory structure.
Project Root
├── src
| ├── main-process
| └── render-process
| ├── index.html
| └── fonts
| ├── c5c3959c04004102ea46.woff2
| └── 535bc89d4af715503b01.woff2
└── package.json
index.html
(render process)
<link rel="preload" href="fonts/c5c3959c04004102ea46.woff2" as="font" crossorigin="anonymous" />
<link rel="preload" href="fonts/535bc89d4af715503b01.woff2" as="font" crossorigin="anonymous" />
Up / down render-process
directory structure.
Note use of the
../
This moves you up one folder level.
Up from
html
(folder) -> torender-process
(folder).
Project Root
├── src
| ├── main-process
| └── render-process
| ├── html
| | └── index.html
| └── fonts
| ├── c5c3959c04004102ea46.woff2
| └── 535bc89d4af715503b01.woff2
└── package.json
index.html
(render process)
<link rel="preload" href="../fonts/c5c3959c04004102ea46.woff2" as="font" crossorigin="anonymous" />
<link rel="preload" href="../fonts/535bc89d4af715503b01.woff2" as="font" crossorigin="anonymous" />
An even deeper up / down render-process
directory structure.
Note use of the
../../
This moves you up two folder levels.
Up from
main
(folder) -> tohtml
(folder) -> torender-process
(folder).
Project Root
├── src
| ├── main-process
| └── render-process
| ├── html
| | └── main
| | └── index.html
| └── css
| └── fonts
| ├── c5c3959c04004102ea46.woff2
| └── 535bc89d4af715503b01.woff2
└── package.json
index.html
(render process)
<link rel="preload" href="../../css/fonts/c5c3959c04004102ea46.woff2" as="font" crossorigin="anonymous" />
<link rel="preload" href="../../css/fonts/535bc89d4af715503b01.woff2" as="font" crossorigin="anonymous" />