Я работаю над приложением Angular 6 / Electron 2 (на основе этого repo ), и у меня есть ошибка в собранном приложении (все отлично работает в разработке).
У меня возникает ошибка, когда я хочу импортировать пользовательские файлы TS в основной файл Electron (файл main.ts), используя метод import . Он работает в разработке, но когда я хочу собрать приложение, встроенное приложение выдает ошибку при запуске.
Я думаю, что путь к файлу плохо решен в встроенном приложении из-за ошибки в файле конфигурации, но я не могу найти решение.
Ошибка при запуске встроенного приложения:
Error: Cannot find module './src/ipc.el.service'
Импортированная строка в main.ts:
import { ElectronIPCService } from './src/ipc.el.service';
Используемые версии:
@angular/compiler : 6.1.2
@angular/compiler-cli : 6.1.2
@angular/core : 6.1.2
@angular-devkit/architect 0.8.2
@angular-devkit/build-angular 0.8.2
@angular-devkit/build-optimizer 0.8.2
@angular-devkit/build-webpack 0.8.2
@angular-devkit/core 0.8.2
@angular-devkit/schematics 0.8.2
@angular/cli 6.2.2
@ngtools/webpack 6.2.2
@schematics/angular 0.8.2
@schematics/update 0.8.2
rxjs 6.2.2
typescript 2.9.2
webpack 4.19.0
electron 2.0.8
electron-builder 20.28.4
Файл Electron-Builder.json:
{
"productName": "MyProject",
"appId": "myproject",
"extraResources": ["./src/assets/**/*"],
"publish": [{
"provider": "generic",
"url": "https://updates.rocketnav.com/"
}],
"npmRebuild": false,
"nodeGypRebuild": false,
"directories": {
"output": "release/"
},
"files": [
"**/*",
"!*.ts",
"!*.code-workspace",
"!LICENSE.md",
"!package.json",
"!package-lock.json",
"!src/",
"!e2e/",
"!hooks/",
"!.angular-cli.json",
"!_config.yml",
"!karma.conf.js",
"!tsconfig.json",
"!tslint.json"
],
"win": {
"icon": "dist/icon",
"artifactName": "${productName}-installer.${ext}",
"target": [
"nsis"
]
},
"mac": {
"category": "Entertainment",
"icon": "dist/icon",
"target": [
"dmg",
"pkg",
"zip"
]
},
"dmg": {
"artifactName": "${productName}-installer.${ext}",
"contents": [{
"x": 110,
"y": 175
},
{
"x": 400,
"y": 175,
"type": "link",
"path": "/Applications"
}
]
},
"linux": {
"artifactName": "${productName}-installer.${ext}",
"target": [
"AppImage",
"deb",
"rpm"
],
"icon": "build/",
"category": "Network"
},
"nsis": {
"deleteAppDataOnUninstall": true
}
}
Файл tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowJs": false,
"target": "es6",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
},
"include": [
"main.ts",
"src/**/*"
],
"exclude": [
"node_modules"
]
}
Часть файла angular.json:
"MyProject": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist",
"index": "src/index.html",
"main": "src/main.ts",
"tsConfig": "src/tsconfig.app.json",
"polyfills": "src/polyfills.ts",
"assets": [
"src/assets",
"src/background.html"
],
"styles": [
"./src/styles.scss",
"./node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"scripts": [
"src/ipc.el.service.js"
]
},
"configurations": {
"dev": {
"optimization": false,
"outputHashing": "all",
"sourceMap": true,
"extractCss": true,
"namedChunks": false,
"aot": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": false,
"fileReplacements": [{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.dev.ts"
}]
},
"production": {
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"fileReplacements": [{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}]
}
}
},
Спасибо за помощь!