将环境变量从命令行传递到 yarn



我有一个代码,可以从环境变量或配置中读取端口号。代码如下所示

const port = process.env.PORT || serverConfig.port;
await app.listen(port);

要在不定义环境变量的情况下运行应用程序,我运行以下 yarn 命令。

yarn start:dev

此命令在 Linux shell 和 Windows 命令行中成功运行。

现在,我想传递环境变量。我尝试以下,

PORT=2344 yarn start:dev

此命令在 Linux shell 中成功运行,但在 Windows 命令行中失败。我尝试了以下方法,但无法使其工作。

尝试: 端口=2344 纱线开始:开发

我收到错误:"PORT"未被识别为内部或外部命令, 可操作的程序或批处理文件。

尝试: 纱线端口=2344 开始:开发

我收到错误:纱线运行v1.17.3 错误命令"PORT=2344"未找到。 info 有关此命令的文档,请访问 https://yarnpkg.com/en/docs/cli/run。

请问有什么想法吗?我知道,我可以从Windows中的系统属性定义环境变量。但是,如果我可以从命令行执行此操作,有什么方法吗?

我建议你使用名为Cross-ENV的NPM模块。 它允许在命令行上添加特定的 env 变量,而不管平台如何。 话虽如此,您可以尝试:

$ cross-env PORT=2344 yarn start:dev

您可以在 Windows 命令提示符下将命令与&(或&&(链接。要设置环境变量,您需要使用set命令。

结果应如下所示:set PORT=1234 && yarn start:dev

在 Windows 命令提示符下找到了此问题的解决方案。

  1. 在项目根文件夹(src 文件夹外部(中创建 .env 文件。

  2. 在其中定义端口。就我而言,.env 文件的内容将是,

PORT=2344

  1. 运行纱线开始:dev

  2. 应用程序将使用您在 .env 文件中指定的端口号。

.env文件放在根目录。然后以下命令将公开.env文件的内容,然后运行yarn start command

$ source .env && yarn start

或此命令

$ export $(cat .env) && yarn start

如果更新 .env 中的任何变量,则关闭终端并打开新的终端窗口,并可以再次运行上述命令。或者也可以运行 unset 命令来删除现有的 var。

unset VAR_NAME

您可以使用流行的软件包dotenv:

在根目录中创建文件 .env 把你所有的环境变量

例如:

ENV=DEVELOPMENT

像这样运行代码

$ node -r dotenv/config your_script.js

这里的解释:

[https://github.com/motdotla/dotenv#preload]

要在 Windows 命令提示符下定义环境变量,我们可以使用 set 命令,然后将调用拆分为两行。

set PORT=2344
yarn start:dev

set 命令保留在当前命令提示符下,因此只需运行一次。

bash 中的等效命令是"导出"。

仅供参考(不是直接答案(。 我在VS Code中尝试这样做 - 通过yarn将.env变量传递给JavaScript应用程序。 谷歌的例子很少,所以我为后代分享这个,因为它有点相关。

下面只是替换通常直接放置在 package.json 或脚本文件中的文本。 使用它来快速混淆或外部化您的交付配置。

在环境变量文件 (.env( 中

PORT=2344

在 Yarn File (package.json( 中

source .env; yarn ./start.sh --port $PORT

在纱线脚本中 (start.sh(

#!/bin/bash 
while [ $? != 0 ]; do
node dist/src/index.js $1;  #replace with your app call#
done

然后,应用接受端口作为变量。 非常适合多租户部署。

相关内容

  • 没有找到相关文章