首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种使用TypeORM和TypeScripts的动态env变量解决或绕过类型错误的方法?

问是否有一种使用TypeORM和TypeScripts的动态env变量解决或绕过类型错误的方法?
EN

Stack Overflow用户
提问于 2019-11-28 09:23:09
回答 1查看 294关注 0票数 0

我正在使用TsED框架进行后端项目(基本上使用TypeScript和ExpressJS)

我还安装了点env包,以使用自定义环境变量(来自项目根部的.env文件)来处理TypeORM。

我成功地访问了我的环境变量,一切正常,但是如果您动态地将TypeORM的类型设置为“mysql”,它将返回以下错误:

预期的类型来自于属性' type‘,在这里'ConnectionOptions’类型上声明了这个类型。

我也遇到了类似的问题,特别是TypeORM的“日志”选项,但我设法通过转换在我的.env文件中检索的config.js变量来解决这些问题。

到目前为止,为了解决TypeORM的“类型”选项,我所做的是:

  • 将我的.env变量转换为DatabaseType,但仍然返回相同的错误,
  • 将我的.env变量转换为“任意”类型,但它随后返回一个未定义的变量,

我真的不知道发生了什么。即使我硬编码'mysql‘值而不是检索.env值,它仍然会抛出一个错误。下面的代码片段显示了我的配置和.env内容,图像显示了错误。

​

代码语言:javascript
复制
# DATABASE (.env file)
DB_TYPE=mysql
DB_HOST=localhost
DB_USERNAME=root
DB_PASSWORD=123456
DB_NAME=taskline
DB_PORT=3306
DB_SYNCHRONIZE=false
DB_LOGGING=true

​

​

代码语言:javascript
复制
 // config.js file retrieving my .env variables
    import * as env from 'dotenv';
    import { LoggerOptions } from 'typeorm/logger/LoggerOptions';
    env.config();

    const config = {
        "DB_DRIVER": 'mysql',
        "DB_HOST": process.env.DB_HOST,
        "DB_USERNAME": process.env.DB_USERNAME,
        "DB_PASSWORD": process.env.DB_PASSWORD,
        "DB_NAME": process.env.DB_NAME,
        "DB_PORT": parseInt(process.env.DB_PORT) as number,
        "DB_SYNCHRONIZE": Boolean(process.env.DB_SYNCHRONIZE) as boolean,
        "DB_LOGGING": process.env.DB_LOGGING as LoggerOptions
    };

    export { config };

​

返回的错误

我想知道为什么会发生这个错误,我如何解决或绕过它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-02 12:04:53

TypeOrm驱动程序连接选项可以使用any类型覆盖,如下所示。

代码语言:javascript
复制
const DB_DRIVER: any = process.env.DB_DRIVER || 'mysql';

const config = {
    "DB_DRIVER": DB_DRIVER,
    "DB_HOST": process.env.DB_HOST,
    "DB_USERNAME": process.env.DB_USERNAME,
    "DB_PASSWORD": process.env.DB_PASSWORD,
    "DB_NAME": process.env.DB_NAME,
    "DB_PORT": parseInt(process.env.DB_PORT) as number,
    "DB_SYNCHRONIZE": Boolean(process.env.DB_SYNCHRONIZE) as boolean,
    "DB_LOGGING": process.env.DB_LOGGING as LoggerOptions
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59085402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档