Ошибка при открытии приложения Electron в Ma c: «file: ///Applications/../Contents/Resources/app.asar/dist/index.html» - PullRequest
0 голосов
/ 17 февраля 2020

Я собрал электронное приложение для ма c, но когда я его запустил, выдается следующее сообщение об ошибке

"Не разрешено загружать локальный ресурс: file: /// Applications / e-admin .app / Содержание / Ресурсы / app.asar / dist / index. html ".

Вот шаги, которые я сделал.

1) build-строитель электроники --mac Создано следующие файлы являются папкой dist. a) e-admin-0.0.0.dmg, e-admin-0.0.0-ma c .zip, index. html и папка ma c b) в папке ma c, которую я мог видеть mac / e-admin.app / Contents / Resources / app.asar (не папка)

2) Я дважды щелкнул мышью, установил e-admin-0.0.0.dmg и переместился в папку приложения. 3) Открыл приложение.

Нужно ли что-либо делать с файлом app.asar (распаковать или что-то еще?) Или с любой процедурой et c, чтобы она работала?

мой пакет. json

{
  "name": "e-admin",
  "version": "0.0.0",
  "scripts": {
    "postinstall": "electron-builder install-app-deps",
    "ng": "ng",
    "start": "npm-run-all -p electron:serve ng:serve",
    "build": "npm run electron:serve-tsc && ng build",
    "build:dev": "npm run build -- -c dev",
    "build:prod": "npm run build -- -c production",
    "ng:serve": "ng serve",
    "ng:serve:web": "ng serve -c web -o",
    "electron:serve-tsc": "tsc -p tsconfig-serve.json",
    "electron:serve": "wait-on http-get://localhost:4200/ && npm run electron:serve-tsc && electron . --serve",
    "electron:local": "npm run build:prod && electron .",
    "electron:linux": "npm run build:prod && electron-builder build --linux",
    "electron:windows": "npm run build:prod && electron-builder build --windows",
    "electron:mac": "npm run build:prod && electron-builder build --mac",
    "test": "ng test",
    "e2e": "npm run build:prod && cross-env TS_NODE_PROJECT='e2e/tsconfig.e2e.json' mocha --timeout 300000 --require ts-node/register e2e/**/*.e2e.ts",
    "version": "conventional-changelog -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md",
    "lint": "ng lint"
  },
  "main": "main.js",
  "private": true,
  "dependencies": {...}

и angular .josn file

"projects": {
    "eAdmin": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist",
            "index": "src/index.html",
            "main": "src/main.ts",
....

main.ts содержит

if (serve) {
    require('electron-reload')(__dirname, {
      electron: require(`${__dirname}/node_modules/electron`)
    });
    win.loadURL('http://localhost:4200');
  } else {
    win.loadURL(url.format({
      pathname: path.join(__dirname, 'dist/index.html'),
      protocol: 'file:',
      slashes: true
    }));
  }

1 Ответ

0 голосов
/ 18 февраля 2020

После нескольких проб и ошибок, следующие изменения работали для меня

1) index. html

`<base href="/">` 

до

<base href="./">

2) в main.ts, измените имя каталога dist на другое

с:

win.loadURL(url.format({
  pathname: path.join(__dirname, 'dist/index.html'),     
  protocol: 'file:',
  slashes: true
}));

На:

win.loadURL(url.format({
  pathname: path.join(__dirname, 'angular_build/index.html'),     
  protocol: 'file:',
  slashes: true
}));

3) Angular. js

"outputPath": "dist/",

до

"outputPath": "angular_build/",

Хотя я видел предложения изменить шаги 2 и 3, я был довольно скептичен. Выглядит как dist directlory, как-то не работает и должен измениться на что-то вроде того, что упоминалось выше

...