问题标签 [dotenv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
128 浏览

ruby-on-rails - Dotenv 在 routes.rb 中不可用?

自从我开始在我的 routes.rb 中使用 Dotenv 之后,我就遇到了奇怪的错误。

我在用着gem 'dotenv-rails', '~> 2.0.0'

routes.rb

终端:

我没有在这两者之间做任何事情rails s,只是重复它并且它起作用了。这真的很奇怪。

这是我正在加载的地方dotenv

有谁知道发生了什么?

- -更新 - -

我已经用谷歌搜索并尝试了一切。它仍然只出现在所有命令的开发环境中railsrake

有人遇到过这个问题吗?这让我疯狂。

0 投票
0 回答
121 浏览

node.js - 如何使用 dotenv 正确加载 Node 的环境变量?

所以我需要能够根据我在应用程序中是在 Heroku 还是 localhost 来加载环境变量。看起来这样做的方法是有一个名为 NODE_ENV 的环境变量,并将其设置为“生产”或“开发”或其他。但是,要做到这一点,我需要首先检测我是否在本地主机上,在这种情况下,我将使用 dotenv 模块获取变量。所以,这是一个递归问题......有没有标准的方法来解决这个问题?

0 投票
1 回答
3552 浏览

javascript - 为什么不应该签入 dotenv 文件?

我是nodejs的新手,如果我的问题太琐碎,请原谅我。我正在使用dotenv创建环境文件。

但是,在他们的网站上,他们建议不要签入.env文件。所以,我想知道如果这个文件没有被签入,我将如何告诉其他开发人员应用程序需要的环境变量。他们需要填写环境变量的,因为它可以在js(服务器、配置)文件中的所有位置使用。查看每个使用 env 变量并替换的文件不是一件容易的事吗?除非我完全错过了一些东西。

任何帮助深表感谢。

0 投票
16 回答
150362 浏览

javascript - dotenv 文件未加载环境变量

我在根文件夹文件中有 .env 文件

并在文件夹server.js中归档。root/app/config/server.js文件的第一行server.js

require('dotenv').config();

我还尝试了以下操作:

require('dotenv').config({path: '../.env'});

require('dotenv').config({path: '../../.env'});

但是,当我从命令提示符server.js运行文件时,未加载我的 env 变量

node root/app/config/server.js

如果我使用视觉工作室并按F5,它会加载!!

我不确定我做错了什么,我错过了什么。任何建议都非常感谢。谢谢。

0 投票
3 回答
1096 浏览

environment-variables - dotenv 是否与十二要素应用程序相矛盾?

我已阅读有关十二因素应用程序的配置 - 第 III 节的信息,并在 NodeJS 中搜索了一种方法。似乎大多数人建议使用dotenv将配置存储在环境变量中。

然而,dotenv 似乎与十二因素应用程序相矛盾,如下所述:

另一种配置方法是使用未检入修订控制的配置文件,例如 Rails 中的 config/database.yml。与使用检入代码仓库的常量相比,这是一个巨大的改进,但仍然存在弱点:很容易错误地将配置文件检入到代码仓库;配置文件倾向于分散在不同的地方和不同的格式,使得在一个地方查看和管理所有配置变得困难。此外,这些格式往往是特定于语言或框架的。

十二因素应用程序将配置存储在环境变量中(通常缩写为 env vars 或 env)。环境变量很容易在部署之间更改,而无需更改任何代码;与配置文件不同,它们被意外签入代码仓库的可能性很小;与自定义配置文件或其他配置机制(如 Java 系统属性)不同,它们是与语言和操作系统无关的标准。

理解这个声明,似乎使用 dotenv,您将创建一个配置文件.env,然后将它们导出为环境变量。

这不会违反十二因素应用程序,因为.env文件可能会意外签入代码仓库吗?

0 投票
2 回答
1393 浏览

node.js - 使用 dotenv 的安全 nodejs 生产环境

通过使用dotenv,我可以在将开发 .env 文件推送到 git 存储库之前忽略它,它符合The Twelve-Factor App config factor。它可以防止配置暴露给其他人,尤其是开源项目。

但是在将其部署到生产环境时,我被卡住了,无论是使用云部署还是使用 docker。

我怎样才能包含这个文件?我应该将文件保存到Vault中吗?

请帮助我了解如何保护我的部署环境。

0 投票
1 回答
244 浏览

node.js - HTML 表单数据未在 Heroku 中发送。ENV变量问题

所以冒着获得更多反对票的风险,这是我的问题(很好!):我花了几个小时试图弄清楚如何让 Heroku 接受我刚刚添加的 ENV 变量(heroku config:set PASS_CODE='password ')。

我在 Express 应用程序中有一个简单的 HTML 联系表单,我正在使用 npm 包 nodemailer,在 .env 文件中添加了 ENV 变量以与 detenv 一起使用,并使用下面的代码调用它们。Heroku 确实声明以相同的方式调用他们的 ENV 变量,但是表单数据没有发送,我仍然在 Heroku 日志中收到以下错误:{ 错误:无效登录:535 5.0.0 身份验证失败。dotenv 和 heroku 都说使用 .process.env 调用 ENV 变量。它在我的本地 node.js 服务器中完美运行,但在我推送到 heroku 时却不行。

这是我的代码片段:

我还在 .env 文件中声明了 ENV 变量,如下所示:PASS_CODE=password,您可以看到我需要 dotenv。

当我通过 node.js 服务器在本地运行时它工作正常,但当我推送到 Heroku 时却不行。我已经在 Heroku 中设置了 ENV 变量,并通过输入heroku config.

为了完整起见,这是我的 package.json 文件的副本:

非常感谢!

0 投票
1 回答
2900 浏览

bash - 如何在破折号中获取 dotenv (.env) 文件?

这里有很多示例如何在 bash 中获取 dotenv 文件,但有没有人使用 dash 实现相同的方法(这是最小 Debian 安装的默认 shell)?

解决方案应如下所示:

例如

重要的是,该解决方案支持带有空格的多行值,例如:

以及引号内的特殊字符(如哈希):

0 投票
1 回答
2314 浏览

javascript - knexfile.js 不读取 Dotenv 变量

所以我正在尝试 knexjs,第一个设置就像一个魅力。我已经建立了我的连接,创建了一个数据结构,然后在我的终端中运行$ knex migrate:latest. 它一切正常... 迁移的表出现在我的数据库中,再次运行 migrate 并得到Already up to date.

现在这是我遇到问题的地方:使用 Dotenv ... 这是我的代码:

据我所知,它没有任何问题,当我通过节点运行脚本时,没有出现错误。然后我想检查我是否仍然可以进行迁移,我收到以下错误:

错误:ER_ACCESS_DENIED_ERROR:用户''@'[MY IP]'的访问被拒绝(使用密码:是)

这次我只在我的.env文件中使用相同的变量。但是当我查看错误时,没有从中加载任何内容,是的knexfile.js.env都在我的项目的根目录中:) 我尝试的方法之一是以不同的方式设置路径,require('dotenv').config();但它会从 dotenv 含义中抛出错误该文件已正确加载。

谁能帮我解决这个问题?

0 投票
1 回答
309 浏览

javascript - dotenv 中 export SOME_ENV_VAR=KEY 和 SOMEOTHER_ENV_VAR=KEY 之间的区别?

我对 Node.js 比较陌生。我想将环境变量从 .env 文件导出到我的 javascript 文件中。为了做到这一点,我正在使用 dotenv。

我应该使用哪种方法将环境变量导出到我的主要 javascript 文件(say-app.js)

需要注意的一点是,在 app.js 中的 console.log(process.env) 中,GEOCODER_API_KEY_1 显示为 env 变量,而不是 GEOCODER_API_KEY?这是为什么。那么第一个有什么用,因为它无法访问?更令人困惑的是:

我基本上想将 API_KEY(不受限制)安全地导出到我的项目中。有没有我可能会错过的问题?