当前位置: 首页 > 知识库问答 >
问题:

前端 - 在electron项目中,ormconfig.json 是放在根目录还是指的放在主进程目录(main/)下呢?

洪飞扬
2024-09-03

在测试项目Electron中,使用TypeORM的时候有2个问题,

1、请问在electron项目中,ormconfig.json 是放在根目录还是指的放在主进程目录(main/)下呢?
QQ_1725330144213.png
2、在electron项目中, 手动配置 typeorm 使用sqlite3的
ormconfig.json 需要如何配置呢?

AI给的示例如下:

{
  "type": "sqlite",
  "database": "electron_app_db.sqlite",
  "synchronize": false,
  "logging": false,
  "entities": [
    "src/entities/*.ts"
  ],
  "migrations": [
    "src/migrations/*.ts"
  ],
  "subscribers": [
    "src/subscribers/*.ts"
  ]
}

但是我觉得entities, migrations, subscribers 都是使用src下面,我个人觉得应该放在主进程文件目录 main/ 下面才对是吗?

共有1个答案

彭阳朔
2024-09-03

问题1: ormconfig.json 的位置

在Electron项目中,ormconfig.json 文件的位置主要取决于你的项目结构和如何组织你的代码。通常,它可以放在项目的根目录下,因为这样可以使得整个应用都能容易地访问到这个配置文件。然而,如果你的Electron应用结构非常特殊,或者你希望将数据库相关的配置与主进程或渲染进程代码明确分离,你也可以将其放在主进程目录(如 main/)下。

但是,更常见的做法是将 ormconfig.json 放在根目录下,然后通过环境变量或在程序启动时动态设置TypeORM的配置来适应不同的环境(如开发环境、测试环境和生产环境)。

问题2: Electron中使用sqlite3的ormconfig.json配置

你给出的示例配置是通用的,适用于在Electron中使用sqlite3。不过,关于 entitiesmigrationssubscribers 的路径,这取决于你的项目结构。如果你的项目结构如下:

  • src/:包含TypeScript源文件

    • entities/:包含实体类
    • migrations/:包含迁移文件
    • subscribers/:包含订阅者文件
  • main/:包含Electron的主进程代码
  • ormconfig.json:在根目录下

那么,你的 ormconfig.json 配置文件中的路径应该与你给出的示例类似,即:

{
  "type": "sqlite",
  "database": "electron_app_db.sqlite",
  "synchronize": false,
  "logging": false,
  "entities": [
    "src/entities/*.ts"
  ],
  "migrations": [
    "src/migrations/*.ts"
  ],
  "subscribers": [
    "src/subscribers/*.ts"
  ]
}

这样的配置是正确的,前提是 src/ 目录位于项目的根目录下。如果你确实希望将这些配置放在 main/ 目录下,并调整 entitiesmigrationssubscribers 的路径,你可以这样做,但请注意这通常不是标准做法,且可能会让其他开发者(或未来的你)感到困惑。

总结

  • ormconfig.json 通常放在项目的根目录下。
  • 配置中的路径应该与你的项目结构相匹配。如果你的实体、迁移和订阅者位于 src/ 目录下,那么你的配置就是正确的。
  • 如果出于某种原因需要将 ormconfig.json 放在 main/ 目录下,你可以这样做,但请确保调整路径以反映新的位置,并且这样做可能会导致混淆。
 类似资料:
  • 我目前使用eclipse进行Java开发。有人能解释为什么在使用像FileReader这样的类时文件被放在src目录下的原因吗?在使用getClass().getResourceAsStream(“...”)等方法时,有时必须将文件放在bin目录下为了读图像?方法getClass().getResourceAsstream(“...”)有其他方法吗需要src目录下的文件吗?

  • 让它工作的唯一方法是在application.conf中添加,但是当我将它部署到“已经定义了CRUD”的Heroku时,这就破坏了一切。 如何强制play只使用/applications/play-1.2.5/中的模块,而不将任何内容复制到工作目录?

  • 我有一个Multiproject项目构建,如下所示,当我进行分级清洁构建时,它会在每个子目录的build/libs/下创建jar,如下所示 现在我想把所有这些子项目JAR(项目A和B)放在一个地方(比如root/build/libs),所以它希望这样

  • 问题内容: 我正在考虑将virtualenv用于我在git存储库中创建的Django Web应用程序中。这似乎是使部署变得如此简单的一种简单方法。我为什么不应该这样做? 问题答案: 我通常pip freeze将所需的软件包放入requirements.txt文件中,然后将其添加到存储库中。我试图思考为什么您要存储整个virtualenv的方法,但是我不能。

  • 嗨,我已经使用以下命令在Ubuntu16.0.4中安装了JDK10。 我遵循下面的链接安装Java10。 如何在Ubuntu下安装JDK10? 他们正在显示正确的版本。 我尝试了安装的两个选项,但当我给出JDK路径表单IntelliJ时,我得到的是 “所选目录不是JDK的有效主目录”错误。

  • 问题内容: 我需要一种在Linux上运行的C ++程序中获取用户主目录的方法。如果相同的代码可以在Unix上运行,那就太好了。我不想使用HOME环境值。 AFAIK,根主目录是/ root。如果我的程序是由root用户运行的,可以在该目录中创建一些文件/文件夹吗? 问题答案: 您需要获取当前用户的用户ID,然后获取该用户的密码条目(包括主目录): 注意:如果您在线程化应用程序中需要此功能,则可以改