我正在使用TsED框架进行后端项目(基本上使用TypeScript和ExpressJS)
我还安装了点env包,以使用自定义环境变量(来自项目根部的.env文件)来处理TypeORM。
我成功地访问了我的环境变量,一切正常,但是如果您动态地将TypeORM的类型设置为“mysql”,它将返回以下错误:
预期的类型来自于属性' type‘,在这里'ConnectionOptions’类型上声明了这个类型。
我也遇到了类似的问题,特别是TypeORM的“日志”选项,但我设法通过转换在我的.env文件中检索的config.js变量来解决这些问题。
到目前为止,为了解决TypeORM的“类型”选项,我所做的是:
我真的不知道发生了什么。即使我硬编码'mysql‘值而不是检索.env值,它仍然会抛出一个错误。下面的代码片段显示了我的配置和.env内容,图像显示了错误。
# 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
// 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 };
我想知道为什么会发生这个错误,我如何解决或绕过它?
发布于 2019-12-02 12:04:53
TypeOrm驱动程序连接选项可以使用any类型覆盖,如下所示。
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
};https://stackoverflow.com/questions/59085402
复制相似问题