Как добавить свои классы машинописи в проекте Electron - PullRequest
1 голос
/ 07 июня 2019

Я создаю проект hello world в Electron и обнаружил, что могу использовать Typescript для основного процесса, https://electronjs.org/blog/typescript.

В нем говорится, что для использования Typescript нужно изменить расширение файла с index.js на index.Затем обновите файл package.json, чтобы он указывал на новый скрипт:

{
  "name": "electrontypescript",
  "version": "1.0.0",
  "description": "Typescript and Electron",
  "main": "index.ts",
  "scripts": {
    "start": "electron ."
  },
  "devDependencies": {
    "electron": "^5.0.1"
  },
  "dependencies": {
    "lodash": "^4.17.11"
  }
}

Он работает, но когда я добавляю свой собственный класс, он выдает ошибки.

Начало индекса.ts:

const { TypeHouse } = require ("./TypeHouse");

TypeHouse.ts:

function test() {

}

export class Cat {

}

export class TypeHouse {
   public status: String = "ready";
   private _output: String = "";
   readonly startTime = Date.now();
   private running: Boolean = false;

   constructor(private _message: String, private _prompt: String) {
       this.setStatus(_message);
   }

   async execute(): Promise<void> {
       try {
           //await CommandExecutor.execute(this);
       } catch (exception) {
           this.handleError(exception);
       } finally {
           //this.emit("end");
       }
   }

   handleError(message: TypeHouse | string): void {
       this.setStatus("Status.Failed");
       if (message) {
          // 
       }
   }

   isRunning(): boolean {
       return this.running !== false;
   }

   public setStatus(value: String) {
       this._output = value;
   }
}

module.exports = {TypeHouse, Cat};

Package.json:

{
  "name": "electron-app",
  "version": "1.0.0",
  "description": "Electron",
  "main": "index.js",
  "scripts": {
    "start": "electron ."
  },
  "devDependencies": {
    "electron": "^5.0.1",
    "typescript": "^3.5.1"
  },
  "dependencies": {
    "lodash": "^4.17.11"
  }
}

Сообщение об ошибке:

Приложение выдало ошибку во время загрузки Ошибка: не удается найти модуль './TypeHouse' Требуется стек: - /Users/projects/ElectronApp/index.ts - / Пользователи / проекты / ElectronApp / node_modules / electronic/dist/Electron.app/Contents/Resources/default_app.asar/main.js

Я использую код Visual Studio, если это имеет значение (он выдает ошибку в консоли).

1 Ответ

1 голос
/ 08 июня 2019

Electron предоставляет объявления типов, а не возможность прямого запуска TypeScript. Нам все еще нужно преобразовать TypeScript в JavaScript перед его запуском.

  1. Держите main на index.js.
  2. Прозрачный ваш TypeScript.
  3. Тогда позвоните npm start.

На шаге (2) мы перенесем файлы index.ts и TypeHouse.ts в JavaScript. Вот как начать перенос TypeScript в Javascript. Из каталога вашего проекта выполните следующие команды:

npm install -g typescript
tsc --init        // create a tsconfig.json file with reasonable default values
tsc               // transpile your TypeScript to JavaScript
npm start         // run the output index.js file 

Хм ... куда вы кладете сборку npm run? Должен ли я заменить значение в свойстве start? Я обновил сообщение с package.json

{
  "name": "electron-app",
  "version": "1.0.0",
  "description": "Electron",
  "main": "index.js",
  "scripts": {
    "build": "tsc",             <--------------------------
    "start": "electron ."
  },
  "devDependencies": {
    "electron": "^5.0.1",
    "typescript": "^3.5.1"
  },
  "dependencies": {
    "lodash": "^4.17.11"
  }
}

Оттуда вы можете сделать npm run build из командной строки, что будет эквивалентно выполнению ./node_modules/.bin/tsc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...