Электронная структура проекта, невозможно запустить в подкаталоге - PullRequest
0 голосов
/ 08 ноября 2019

Короче говоря, я получаю эту ошибку:

enter image description here

Всякий раз, когда я пытаюсь использовать пользовательскую структуру проекта для электронного приложения (я такжеиспользовать электронный строитель)

Моя структура проекта выглядит следующим образом:

В основном я разделяю приложение как:

  • angular - часть приложения от angular - это работает
  • electron - часть электронного приложения - не работает
  • shared - общие классы / интерфейсы машинописи для обоих слоев

и что касается моего package.json:

{
    "main": "dist-electron/electron/main.js",
    "scripts": {
        "postinstall": "electron-builder install-app-deps",
        "ng": "ng",
        "start": "npm-run-all -p ng:serve electron:serve",
        "build": "yarn electron:serve-tsc && ng build",
        "build:dev": "yarn build -- -c dev",
        "build:prod": "yarn build -- -c production",
        "ng:serve": "ng serve",
        "ng:serve:web": "ng serve -c dev-web -o",
        "electron:serve-tsc": "tsc -p tsconfig-serve.json",
        "electron:serve": "wait-on http-get://localhost:4200/ && yarn electron:serve-tsc && electron . --serve",
        "electron:local": "yarn build:prod && electron .",
        "electron:linux": "yarn build:prod && electron-builder build --linux",
        "electron:windows": "yarn build:prod && electron-builder build --windows",
        "electron:mac": "yarn build:prod && electron-builder build --mac",
        "test": "ng test",
        "version": "conventional-changelog -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md",
        "lint": "ng lint"
    },
}

tsconfig-serve.json:

{
    "compilerOptions": {
        "outDir": "./dist-electron",
    }
}

Что я здесь не так делаю? Как переместить электронное приложение в подпапку?

1 Ответ

0 голосов
/ 12 ноября 2019

В итоге я использовал webpack, чтобы упаковать весь электрон в один файл, и теперь он работаетДаже внутри подкаталога.

Основной файл для package.json:

"main": "./dist-electron/main.js",

Это мои electron.webpack.js:

const path = require('path');
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
const nodeExternals = require('webpack-node-externals');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const JavaScriptObfuscator = require('webpack-obfuscator');

module.exports = {
    target: 'electron-main',
    mode: 'development', // production
    entry: {
        renderer: 'electron-app/main.ts',
    },
    output: {
        filename: 'main.js',
        path: path.resolve(__dirname, 'dist-electron')
    },
    node: {
        __dirname: true
    },
    optimization: {
        minimizer: [new UglifyJsPlugin({
            parallel: true,
            uglifyOptions: {
                mangle: {
                    toplevel: true,
                },
                toplevel: true,
                ie8: false,
            },
        })],
    },
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: [
                    {
                        loader: 'ts-loader',
                        options: {
                            configFile: "tsconfig-serve.json"
                        }
                    }
                ],
                exclude: [
                    /node_modules/,
                ],

            }
        ]
    },
    plugins: [
        // new JavaScriptObfuscator ({
        //  rotateUnicodeArray: true
        // }, [])
    ],
    resolve: {
        modules: [
            "node_modules",
            path.resolve(__dirname, "node_modules")
        ],
        plugins: [new TsconfigPathsPlugin({ configFile: "tsconfig-serve.json" })],
        extensions: ['.tsx', '.ts', '.js'],
    },
    externals: [nodeExternals()]
};

и tsconfig-serve.json:

{
    "compilerOptions": {
        "sourceMap": true,
        "outDir": "./dist-electron",
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es2015",
        "pretty": true,
        "skipLibCheck": true,
        "allowSyntheticDefaultImports": true,
        "allowJs": true,
        "types": [
            "node"
        ],
        "baseUrl": "./",
        "paths": {
            --SNIP--
        },
        "lib": [
            "es2017",
            "es2016",
            "es2015",
            "dom"
        ]
    },
    "files": [
        "electron-app/main.ts"
    ],
    "exclude": [
        "node_modules",
        "**/*.spec.ts"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...