将 .env 常量传递给内部目录

Passing .env consts to inner directories

我的 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

如果我 运行 "db:seed": "npx knex --knexfile ./ConfigKnex.ts seed:run" ,就可以了。

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

为什么 ConfigKnex 只能获取本地的 .env?有没有办法在没有中间文件的情况下将 .env 常量传递给 ConfigKnex?

您可以将路径传递给 dotenv.config()。 Node 的 path 模块可以解决您的问题并规范化路径。像这样:

import path from "path";
import { config } from "dotenv";
config({
  path: path.resolve(__dirname, "..", ".env"), // adjust path to your needs
})