标签: dotenv

为什么 dotenv 没有加载到 docker 中,但在主机中运行良好?

我想构建一个将运行我的 node.js 应用程序的 Docker 映像。我正在使用dotenv npm 包来存储环境变量。它.env位于项目的根目录中。npm run start_in_docker当我运行从主机启动应用程序()的 npm 脚本时,一切都运行良好。但是,当我运行 Docker 容器时,出现以下错误:

internal/modules/cjs/loader.js:584
    throw err;
    ^

Error: Cannot find module 'dotenv'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/usr/src/app/src/server/main.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3) 
Run Code Online (Sandbox Code Playgroud)

这是我的 Dockerfile:

FROM node:10-alpine

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json …
Run Code Online (Sandbox Code Playgroud)

environment-variables node.js docker npm-install dotenv

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

在 VS Code-debugger 中,如何将 launch.json 中的 envFile 用于 nodejs?

我正在尝试在我的 nodejs 应用程序上的 VS Code 中运行调试器。我正在使用 .env 文件来存储我稍后使用 process.env 调用的环境变量。不幸的是,当我运行调试器时,这并没有加载文件。

启动.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "RegressionTestSuite",
            "autoAttachChildProcesses": true,
            "program": "node ${workspaceFolder}/node_modules/.bin/cucumber-js",
            "args": [
            ],
            "envFile": "${workspaceFolder}/.env"
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

.env:

export SCREEN_SIZE_WIDTH='1366';
export SCREEN_SIZE_HEIGHT='768';
Run Code Online (Sandbox Code Playgroud)

当我运行 VS Code 调试器时,我的 .env 文件中没有环境变量。我应该如何调用 launch.json 中的 .env 文件?


我应该在我让它工作之后添加更多信息:

我最终使我的 .env 文件成为环境变量列表

.env 文件示例:

# Standard supported size is width='1366, height=768
SCREEN_SIZE_WIDTH='1366'
SCREEN_SIZE_HEIGHT='768'
EPAY_GUI_AUTOMATION_TEST_DEBUG_MODE='yadda_yadda_yadda'
Run Code Online (Sandbox Code Playgroud)

在我的 nodejs 世界构造函数中,我包括

world.js 示例:

enter code here`enter code here`require('dotenv').config();
process.env.EPAY_GUI_AUTOMATION_TEST_DEBUG_MODE
Run Code Online (Sandbox Code Playgroud)

在我使用的 hook.js …

debugging node.js visual-studio-code vscode-debugger dotenv

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

我应该在每个节点 JS 文件中调用 dotenv 吗?

我想使用环境变量。不幸的是,我是一个缺乏经验的开发人员,很晚才决定在我的项目中实施这样的解决方案。

我正在尝试将位于 .env 文件中的环境变量注入所有 JS 文件(并非所有文件都使用环境变量,但我认为它会更快更容易)。目前,我正在使用 dotenv 包,但它显然一次在一个文件中工作。

我应该以标准方式使用 dotenv 吗?也许有一个我不知道的漏洞,这就是为什么以这种方式使用环境变量非常不受欢迎。

if (process.env.NODE_ENV !== 'production') {
  require('dotenv').config();
}
Run Code Online (Sandbox Code Playgroud)

environment-variables node.js dotenv

5
推荐指数
3
解决办法
4229
查看次数

如何使用 dotenv 在另一个环境变量名称和值中使用一个环境变量值?

对于我的测试框架,我使用dotenv来读取和初始化不同测试环境的环境变量。现在我想使用特定的环境变量值作为另一个环境变量的值和名称的一部分。

因此,我在使用 .envexport INSTANCE=1文件初始化 env 文件之前设置了环境变量dotenv

这是我的环境文件,其中包含我想要初始化的所有环境变量dotenv

# INSTANCE as part of env var value
MY_DOMAIN="http://mypage/"$INSTANCE""

# INSTANCE as part of env var name
SUBDOMAIN"$INSTANCE"="/mysubdomain"
Run Code Online (Sandbox Code Playgroud)

而且这个指标也不起作用:

# INSTANCE as part of env var value
MY_DOMAIN=http://mypage/${INSTANCE}

# INSTANCE as part of env var name
SUBDOMAIN${INSTANCE}=/mysubdomain
Run Code Online (Sandbox Code Playgroud)

这可以通过 bash 来完成

export MY_DOMAIN="http://mypage/"$INSTANCE"" SUBDOMAIN"$INSTANCE"="/mysubdomain"

echo $MY_DOMAIN
http://mypage/1

echo $SUBDOMAIN1
/mysubdomain
Run Code Online (Sandbox Code Playgroud)

但使用dotenv它对我来说不起作用。我有以下代码:

const dotenv = require("dotenv");
var result = dotenv.config({ path: '/path/to/my/env/file' });

console.log(result.parsed);
Run Code Online (Sandbox Code Playgroud)

产生 …

javascript environment-variables dotenv

5
推荐指数
1
解决办法
5247
查看次数

Angular 9 中的 Env 实现

有没有办法在 Angular 中隐藏 API 凭据?

我尝试在我的项目中实现代码,但似乎无法正常工作,我不知道这是否与 Angular 9 兼容,我按照步骤操作,但仍然收到错误。

请参阅下面的链接和我的示例代码, https://www.ninadsubba.in/blog/setup-dotenv-to-access-environment-variables-in-angular-9

在此输入图像描述

环境.ts

在此输入图像描述

.env

在此输入图像描述

端子输出

我已经安装了以下软件包: npm install --save-dev yargs dotenvnpm install @types/node --save-dev,但仍然出现此错误,请帮助我解决此问题,以清楚地了解 dotenv 如何有用隐藏 Angular 中的凭据,或者如果这仅适用于 Node.js,对不起,我是 Angular 方面的新手。提前致谢。

angular dotenv

5
推荐指数
1
解决办法
9062
查看次数

如何在 .env 文件中定义数组/对象?

以下是我的 Javascript 对象:

window.options = {
    VAR1: VAL1,
    VAR2: VAL2,
    VA31: VAL3,
};
Run Code Online (Sandbox Code Playgroud)

我希望它(对象或数组)在.env文件中定义。我怎样才能做到这一点?

dotenv

5
推荐指数
1
解决办法
3425
查看次数

安装包时向 .env 添加新的环境变量

在我们公司,几个内部项目依赖相同的复制代码部分来处理与相同 API(例如:Google Suite、JIRA 等)的连接。为了避免为新项目一遍又一遍地复制相同的代码,我想创建收集这些 A​​PI 类的 Symfony 包。

棘手的部分:我正在寻找一种方法将必要的环境变量自动添加到.env,就像Symfony 的配方结构那样。但由于这些项目只能在内部使用,因此将它们的配方配置推送到公共存储库对我来说是行不通的。添加自定义配方服务器(如moay 的服务器)对我来说看起来很有趣,但需要在每个项目中进行额外配置composer.json

有没有更好的方法来解决这个问题,这样我就可以简单地在我的项目中定义所需的变量,这样它们就可以在.env没有任何额外魔法的情况下被添加进来?

注意:任何需要symfony/flex都可以,因为这应该是我们公司所有新项目的一部分

这些是我想避免的解决方案:

  • 将配置添加到包/包本身,以便这些配置值置于版本控制之下
  • 通过安装后手动运行的任何其他命令添加配置

php symfony composer-php dotenv

5
推荐指数
1
解决办法
454
查看次数

如何在 Vue.js 应用程序上存储我的私有 api 密钥?

我阅读了 Vue CLI 上的文档,我想确定我是否理解正确。

文档说,

Note that only NODE_ENV, BASE_URL, and variables that start with VUE_APP_ will be statically embedded into the client bundle with webpack.DefinePlugin. It is to avoid accidentally exposing a private key on the machine that could have the same name.

那么这是否意味着我应该在没有前缀 VUE_APP 的情况下存储我的私钥?例如,

VUE_APP_NOT_SECRET_KEY=not_secret_key
SECRET_KEY=secret_key
Run Code Online (Sandbox Code Playgroud)

存储我的密钥的方法是否正确?

environment-variables vue.js vue-cli dotenv

5
推荐指数
1
解决办法
2011
查看次数

如何在 Nuxt 配置中设置 .env 文件路径?

我正在从@nuxtjs/dotenv模块迁移到 Nuxt 新的运行时配置。我尝试遵循官方指南,但找不到指定 env 文件路径的方法,并且我的默认 .env 文件在构建时未加载。

有没有办法在不使用 @nuxtjs/dotenv 的情况下在 nuxt.config.js 中设置 .env 文件路径?

config filepath nuxt.js dotenv

5
推荐指数
1
解决办法
215
查看次数

Cypress 在自定义命令中加载环境变量

我正在构建 Next.js 应用程序并使用 Cypress 编写我的测试。我在本地使用.env.local文件配置环境变量。在 CI 管道中,它们通常被定义。

我正在尝试在 Cypress 中编写一个自定义命令来加密cypress/support/command.ts.

import { encryptSession } from 'utils/sessions';

Cypress.Commands.add(
  'loginWithCookie',
  ({
    issuer = 'some-issuer',
    publicAddress = 'some-address',
    email = 'some-mail',
  } = {}) => {
    const session = { issuer, publicAddress, email };

    return encryptSession(session).then(token => {
      cy.setCookie('my-session-token', token);
      return session;
    });
  },
);
Run Code Online (Sandbox Code Playgroud)

当此命令运行时,它会失败,因为encryptSession使用了TOKEN_SECRET赛普拉斯未加载的环境变量。

import Iron from '@hapi/iron';

const TOKEN_SECRET = process.env.TOKEN_SECRET || '';

export function encryptSession(session: Record<string, unknown>) {
  return Iron.seal(session, …
Run Code Online (Sandbox Code Playgroud)

javascript environment-variables add-custom-command cypress dotenv

5
推荐指数
1
解决办法
1229
查看次数