создание приложения electron с помощью плагина Vue CLI Electron Builder (невозможно получить доступ к ‘fa’ перед инициализацией) — Ассоциация TypeORM ManyToOne

#vue.js #typeorm #electron-builder

#vue.js #typeorm #electron-builder

Вопрос:

У меня есть проект приложения electron, который отлично работает в режиме разработки с webpack dev server и vue-cli-service.

Теперь я хочу упаковать свое приложение для распространения в производстве.

Для этого я использую библиотеку Electron Builder плагина Vue CLI и запускаю эту команду :

   "electron:build": "vue-cli-service electron:build"
 

Кажется, все хорошо. Никаких ошибок или прерываний процесса. Но когда я запускаю установку своего нового приложения, у меня возникает ошибка при запуске, подобная этой :

      A JavaScript error occurred in the main process

    Uncaught Exception:
    ReferenceError: Cannot access 'fa' before initialization
    at Module.<anonymous> (/Applications/electrony.app/Contents/Resources/app.asar/background.js:2:1550520)
    at n (/Applications/electrony.app/Contents/Resources/app.asar/background.js:2:110)
    at Object.<anonymous> (/Applications/electrony.app/Contents/Resources/app.asar/background.js:2:110880)
    at n (/Applications/electrony.app/Contents/Resources/app.asar/background.js:2:110)
    at /Applications/electrony.app/Contents/Resources/app.asar/background.js:2:902
    at Object.<anonymous> (/Applications/electrony.app/Contents/Resources/app.asar/background.js:2:913)
    at Module._compile (internal/modules/cjs/loader.js:967:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1004:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Module._load (internal/modules/cjs/loader.js:727:14)
 

Если проверить background.js файл, который я могу просмотреть :

 S([Object(z.ManyToOne)(()=>fa,a=>a.association,{nullable:!0,cascade:["insert","update"],eager:!0}),x("design:type","function"==typeof(b=void 0!==faamp;amp;fa)?b:Object)]
 

Похоже, что дело с объявлением TypeORM entity association ManyToOne. Но я не понимаю, что такое ‘fa’ в этом контексте, потому что в этом файле объекта не существует объявления библиотеки или объекта ‘fa’.

Вы уже упаковали приложение electron с библиотекой TypeORM?

Ответ №1:

Я решаю свою проблему, изменяя файл tsconfig.json

из этого :

   "lib": ["es5", "es6", "dom"],
  "module": "esnext",
  "target": "es6",
  "moduleResolution": "node",
  "noImplicitAny": true,
  "removeComments": true,
  "preserveConstEnums": true,
  "sourceMap": true,
  "experimentalDecorators": true,
  "emitDecoratorMetadata": true,
  "esModuleInterop": true,
 

для этого :

   "lib": ["es5", "es6", "dom"],
  "module": "commonjs",
  "target": "esnext",
  "types": ["node", "jest"]
  "moduleResolution": "node",
  "noImplicitAny": true,
  "removeComments": true,
  "preserveConstEnums": true,
  "sourceMap": true,
  "experimentalDecorators": true,
  "emitDecoratorMetadata": true,
  "esModuleInterop": true,
 

Теперь у сгенерированных объектов files нет проблем с циклическим объявлением.