Я пишу приложение с помощью Electron и Angular 2+ с использованием Angular CLI. Я установил свой электронный файл.js, чтобы указать URL-адрес, предоставленный командой ng serve
, которая обычно является localhost:4200
, чтобы зафиксировать изменения кода. Некоторые соображения:
localhost:4200
указывает на index.html
;index.js
- мой сценарий точки входа в электронную систему Вот мой файл index.js
используемый в качестве точки входа для электронного модуля.
const {app, BrowserWindow} = require('electron');
const url = require('url');
const path = require('path');
let win = null;
function createWindow() {
win = new BrowserWindow({width: 1000, height: 600, show: false});
win.loadURL('http://localhost:4200');
win.maximize();
win.on('closed', () => {
win = null;
});
win.on('ready-to-show', () => {
win.show();
});
win.webContents.openDevTools();
}
app.on('ready', () => {
createWindow();
});
app.on('activate', () => {
if (win === null) {
createWindow();
}
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
И мой файл index.html
:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>BRISA Carbon</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<!--Clarity Design Elements-->
<link rel="stylesheet" href="../node_modules/clarity-icons/clarity-icons.min.css">
<script type="text/javascript" src="../node_modules/@webcomponents/custom-elements/custom-elements.min.js"></script>
<script type="text/javascript" src="../node_modules/clarity-icons/clarity-icons.min.js"></script>
</head>
<body>
<app-root></app-root>
</body>
</html>
Когда я запускаю ng serve
, ресурсы node_modules внутри.html файла не загружаются, а консоль Chrome выводит следующие сообщения:
Я знаю, что путь к ресурсам правильный, потому что я использую WebStorm IDE, и я могу перейти к ссылочному элементу через ссылку, подобную приведенному ниже.
Почему мои ресурсы не загружаются, когда я работаю в режиме Angular live?
Для всех, у кого такая же проблема, я нашел решение. Вместо того, чтобы загружать мои ресурсы через файл index.html
, я поместил их в .angular-cli.json
. В принципе, Угловой 2+ имеет собственный способ импорта ресурсов и, похоже, не является правильным загрузкой ресурсов из основного.html файла.
Ну, для скриптов (я имею в виду файлы.js), я помещаю его в массив scripts
и стили внутри массива styles
. Раздел .angular-cli.json
который я изменил, выглядит следующим образом:
"styles": [
"styles.css",
"../node_modules/clarity-icons/clarity-icons.min.css",
"../node_modules/clarity-ui/clarity-ui.min.css"
],
"scripts": [
"../node_modules/@webcomponents/custom-elements/custom-elements.min.js",
"../node_modules/clarity-icons/clarity-icons.min.js"
]
Надеюсь, что эта информация поможет кому-то другому. Для меня все работает нормально.
.angular-cli.json
является правильным способом добавления внешних зависимостей в ваше приложение angular-cli.
Я предполагаю, что у вас такая же проблема, когда вы посещаете localhost:4200
в вашем браузере?
В вашем index.html вы ссылаетесь на ../node_modules/...
который работает в вашей среде IDE, потому что это похоже на структуру папок.
Скажем, ваша структура папок выглядит так:
node_modules/
src/
И src
- это папка, которую ваш сервер использует как root. Тогда сервер не сможет извлекать файлы из ..
(поскольку корневой каталог не имеет родительского каталога).
Вместо того, чтобы ссылаться на файлы JS в вашем index.html, вы должны импортировать/требовать их в других JS файлах. Точно как вы делаете это на ваших инструментах построения/комплектации (например, Webpack и/или Babel).
import '@webcomponents/custom-elements/custom-elements.min.js'
import 'clarity-icons/clarity-icons.min.js'
import 'clarity-icons/clarity-icons.min.css' // Assumes that you use webpack and webpack-css-loader, for example