使用 Vue CLI Plugin Electron Builder 构建电子应用程序(在初始化之前无法访问“fa”)-TypeORM 关联 ManyToOne

Posted

技术标签:

【中文标题】使用 Vue CLI Plugin Electron Builder 构建电子应用程序(在初始化之前无法访问“fa”)-TypeORM 关联 ManyToOne【英文标题】:building electron app with Vue CLI Plugin Electron Builder (cannot access 'fa' before initialization) - TypeORM association ManyToOne 【发布时间】:2021-04-06 01:50:58 【问题描述】:

我有一个电子应用项目,可以在开发模式下完美运行,使用 webpack 开发服务器和 vue-cli-service。

现在我想打包我的应用程序以进行生产分发。

为此,我使用 Vue CLI Plugin Electron Builder 库并启动此命令:

  "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!==fa&&fa)?b:Object)]

似乎是在处理 TypeORM 实体关联 ManyToOne 声明。但我不明白“fa”是什么,因为该实体文件中不存在任何“fa”库或对象的声明。

您是否已经使用 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,

现在生成的文件实体没有循环声明问题了。

【讨论】:

以上是关于使用 Vue CLI Plugin Electron Builder 构建电子应用程序(在初始化之前无法访问“fa”)-TypeORM 关联 ManyToOne的主要内容,如果未能解决你的问题,请参考以下文章

Babel 插件 transform-remove-console 不适用于 Vue CLI 4 @vue/cli-plugin-babel/preset?

无法添加 vue-cli-plugin-cordova

vue/cli-plugin-pwa:服务器请求(使用 axios)不被 service worker 缓存

带有 Vue 和 vue-cli-plugin-electron-builder 的电子应用程序无法与 Tesseract.js 一起使用

webpack5, vue3,vue-cli5 使用 prerender-spa-plugin 预渲染

vue-cli-plugin-prerender-spa 生成错误未在 html 文件中找到