标签: dotenv

如何向 .env 文件添加注释?

我正在使用dotenv模块从.env文件加载环境变量。

.env

# config
DAILY_REPORT_SCHEDULE='*/1 * * * *'
PORT=8080
NODE_ENV=development
DOTENV_DEBUG=true

# credentials
PROJECT_ID=shadowsocks-218808
KEY_FILE_NAME='/Users/ldu020/workspace/nodejs-gcp/.gcp/shadowsocks-218808-7f8e109f4089.json'
Run Code Online (Sandbox Code Playgroud)

如您所见,我在.env文件中添加了两个注释。

dotenv.js

require('dotenv').config({ debug: process.env.DOTENV_DEBUG === 'true' });

dotenv 给我调试信息:

# config
DAILY_REPORT_SCHEDULE='*/1 * * * *'
PORT=8080
NODE_ENV=development
DOTENV_DEBUG=true

# credentials
PROJECT_ID=shadowsocks-218808
KEY_FILE_NAME='/Users/ldu020/workspace/nodejs-gcp/.gcp/shadowsocks-218808-7f8e109f4089.json'
Run Code Online (Sandbox Code Playgroud)

我知道收到这些调试消息的原因是我在.env文件中添加了两条注释和一些新行。dotenv不能.env正确解析文件。

我该如何解决这个问题?

node.js dotenv

44
推荐指数
2
解决办法
3万
查看次数

在多个 .env 文件之间切换,例如 .env.development 和 node.js

我想为每种模式(开发、生产等)使用单独的 .env 文件。在处理我的 vue.js 项目时,我可以使用类似.env.development或 的文件.env.production来获取相同 env 键的不同值。(例如:在 .env.development 中:FOO=BAR 和在 .env.production 中:FOO=BAZ,在开发模式中 process.env.FOO 将是 BAR,在生产中我将是 BAZ)。

我正在 Express 服务器上工作,并希望使用这些相同类型的 .env 文件来存储端口、db uri、用户、密码...

我知道我可以像这样编辑 package.json 中的脚本:

"scripts": {
    "start": "NODE_ENV=development PORT=80 node ./bin/www",
    "start-prod": "NODE_ENV=production PORT=81 node ./bin/www"
}
Run Code Online (Sandbox Code Playgroud)

但这在使用多个变量时会变得混乱。

我试过使用dotenv但似乎您只能使用 .env 文件。不是 .env.development 和 .env.production。

我可以使用 dotenv 包还是需要另一个包?或者我可以在没有任何包装的情况下做到这一点吗?

environment-variables node.js express dotenv

40
推荐指数
5
解决办法
4万
查看次数

.env 文件何时需要引号?

例如,Symfony 的configuration-environment-variables-in-env-files 文档提供了示例:

DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name"
DB_USER=root
Run Code Online (Sandbox Code Playgroud)

为什么第一个示例使用引号(又名括号)而不是第二个示例?

如果适用的答案取决于解析 .env 文件的应用程序,请基于 Symfony。

php linux environment-variables symfony dotenv

35
推荐指数
1
解决办法
3万
查看次数

如何使用 dotenv 从 .env 和 .env.local 加载环境变量?

这可能看起来像一个新手问题,但我无法找到使用 dotenv 从节点中的 .env 和 .env.local 文件加载环境变量的方法。

有可能吗?如果不使用 dotenv,现在人们如何从这两个文件加载环境变量?

node.js npm dotenv

31
推荐指数
2
解决办法
4万
查看次数

转义 .env 文件中的 # 字符

我想要存储在 Express 服务器的环境文件中的秘密 API 密钥会忽略其中的一半,因为它中间包含一个 # 符号。我无法重新生成密钥。并且不希望它变得不连续

escaping node.js dotenv

29
推荐指数
1
解决办法
3万
查看次数

如何修复“找不到文件'.../node_modules/dotenv/types'。” 来自 jsconfig.json 的错误?

VSCode 显示 jsconfig.json 错误:“找不到文件‘.../node_modules/dotenv/types’。”

似乎在寻找 dotenv 的打字稿定义,但我没有使用打字稿或 dotenv(除了在导入的包中)。并且有一个node_modules/dotenv/types文件夹。

visual-studio-code dotenv vscode-jsconfig

28
推荐指数
4
解决办法
9804
查看次数

带有 dotenv 和 TypeScript 的环境变量

我创建这个.env文件:

TYPE=xxx
HOST=xxx,
PORT=xxx,
USERNAME=xxx,
PASSWORD=xxx,
DATABASE=xxx,
Run Code Online (Sandbox Code Playgroud)

在我的文件中,我以这种方式使用:

import * as dotenv from "dotenv";

dotenv.config();

export const typeOrmConfig: TypeOrmModuleOptions = {
    port: process.env.PORT
}
Run Code Online (Sandbox Code Playgroud)

但我可以用我只能port从变量.env文件,我不能用变量的休息,谁能告诉我,为什么我不能用我的瓦尔的休息吗?

javascript node.js typescript nestjs dotenv

23
推荐指数
3
解决办法
4万
查看次数

NestJS - 如何在主应用程序模块文件中使用 .env 变量进行数据库连接

我正在开发我的第一个 NestJS 应用程序,它在app.module.ts.

但是根据我们的要求,我不得不从环境文件中选择数据库配置值。为此,我遵循了 nestjs 文档网站上的配置文档 - https://docs.nestjs.com/techniques/configuration

但问题是我需要在同一个文件中使用 .env 变量进行数据库连接,这是失败的。

这是我运行良好的原始代码:

@Module({
  imports: [
    MongooseModule.forRoot(`mongodb+srv://myusername:mypassword@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
    ProductModule,
    CategoryModule,
  ],
  controllers: [
    AppController,
    HealthCheckController,
  ],
  providers: [AppService, CustomLogger],
})
Run Code Online (Sandbox Code Playgroud)

现在,我想从.ENV文件,这是喜欢挑选那些DB值local.envdev.env取决于环境等。现在,我的这段代码不起作用:

@Module({
  imports: [
    ConfigModule.forRoot({ envFilePath: `${process.env.NODE_ENV}.env` }),
    MongooseModule.forRoot(`mongodb+srv://${ConfigModule.get('DB_USER')}:${ConfigModule.get('DB_PASS')}@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
    ProductModule,
    CategoryModule,
  ],
  controllers: [
    AppController,
    HealthCheckController,
  ],
  providers: [AppService, CustomLogger],
})
Run Code Online (Sandbox Code Playgroud)

javascript environment-variables node.js nestjs dotenv

23
推荐指数
5
解决办法
2万
查看次数

.env(或 dotenv)文件到底是什么?

有很多可以利用.env文件的程序。它们中的大多数支持基本的 bash 语法,其他支持更高级的东西,例如文件中的模板.env。您使用文件的方式.env也有很大差异。通常在这种情况下,您会从 12-factor-app 开始,它指出您应该将(某些)配置导出为环境变量,这显然会导致两个用例:

  • 有些 dotenv 程序就是这样做的:您在 shell 上的命令前面加上前缀dotenv,dotenv 文件中的变量将神奇地在您的进程中可用。
  • 然而,其他人提供了实际上从代码中读取文件的——这是一种非常不同的方法,因为您的代码突然直接解释文件并且不再“看到”环境变量。.env.env

由于对用法、用例和语法有如此多不同的解释,是否有正确的.env文件定义或一些普遍接受的标准?如果没有,至少有一些历史参考资料?

dotenv

22
推荐指数
1
解决办法
2万
查看次数

运行脚本时抛出找不到模块“dotenv”

在加载.env文件以将 env 值传递给getToken.jscypress 根文件夹中的脚本时,会抛出无法找到模块 'dotenv' 错误。我已经安装了npm install dotenv. 有人可以告诉我在这里缺少什么吗?.env文件位于 cypress 根文件夹中。

环境:Windows 10 > git bash /命令提示符

    const puppeteer = require("puppeteer");
    require('dotenv').config({path: '.env'})
    
    const baseURL = process.env.CYPRESS_BASE_URL
    const testsUser = process.env.CYPRESS_TESTS_USERNAME
puppeteer
  .launch({ headless: true, chromeWebSecurity: false, args: ['--no-sandbox'] })
  .then(async browser => {
    const page = await browser.newPage();
    await page.goto(`${baseURL}/login`);

    await page.waitFor(2000);
    await page.waitForSelector("input[name=username]");
    await page.type("input[name=username]", testsUser , {
      delay: 50
    });

    browser.close();
  });
Run Code Online (Sandbox Code Playgroud)

包.json

"scripts": {
    "cy:run": "cypress run",
    "get-token-main": …
Run Code Online (Sandbox Code Playgroud)

puppeteer cypress dotenv

17
推荐指数
3
解决办法
4万
查看次数