Ошибка при импорте пользовательского модуля TS в приложение Angular + Electron - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю над приложением 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"
                    }]
                }
            }
        },

Спасибо за помощь!

...