Javascript 将.env常量传递到内部目录

Javascript 将.env常量传递到内部目录,javascript,typescript,environment-variables,knex.js,Javascript,Typescript,Environment Variables,Knex.js,我的ConfigKnex.ts文件如下所示 require("ts-node/register"); import { config } from "dotenv"; config(); const { DATABASE_URL } = process.env; console.log({ DATABASE_URL }); export const development = { client: "postgresql",

我的ConfigKnex.ts文件如下所示

require("ts-node/register");
import { config } from "dotenv";
config();

const { DATABASE_URL } = process.env;
console.log({ DATABASE_URL });

export const development = {
    client: "postgresql",
    connection: DATABASE_URL,
};
server
- lib
-- somefiles.js
- package.json
- .env
我的文件目录看起来像

require("ts-node/register");
import { config } from "dotenv";
config();

const { DATABASE_URL } = process.env;
console.log({ DATABASE_URL });

export const development = {
    client: "postgresql",
    connection: DATABASE_URL,
};
server
- lib
-- somefiles.js
- package.json
- .env
如果我运行
“db:seed”:“npx knex--knexfile./ConfigKnex.ts seed:run”
,它会工作

如果我将ConfigKnex移动到lib文件夹下并运行
“db:seed”:“npx-knex-knexfile./lib/ConfigKnex.ts seed:run”
,它不会运行。在进一步调试之后,我注意到如果我移动ConfigKnex,
数据库的URL
是未定义的


如果.env是本地的,为什么ConfigKnex只能获取.env?有没有一种方法可以在没有中间文件的情况下将.env常量传递给ConfigKnex?

您可以传递到dotenv.config()的路径。节点的
路径
模块可以解决您的问题并规范路径。大概是这样的:

从“路径”导入路径;
从“dotenv”导入{config};
配置({
path:path.resolve(uu dirname,“…”,“.env”),//根据需要调整路径
})