【问题标题】:Pass environment variable from command line to yarn将环境变量从命令行传递给纱线
【发布时间】:2020-01-10 08:52:48
【问题描述】:

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

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 命令行中失败。我尝试了以下方法,但无法正常工作。

试过了:PORT=2344 yarn start:dev

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

试过:yarn PORT=2344 start:dev

我收到错误:yarn run v1.17.3 找不到错误命令“PORT=2344”。 info 访问https://yarnpkg.com/en/docs/cli/run 获取有关此命令的文档。

有什么想法吗?我知道,我可以从 Windows 的系统属性中定义环境变量。但是如果我可以从命令行做到这一点,有什么办法吗?

【问题讨论】:

    标签: windows command-line yarnpkg


    【解决方案1】:

    你可以使用流行的包dotenv:

    在根目录中创建一个文件 .env 放置所有环境变量

    例如:

    ENV=DEVELOPMENT
    

    像这样运行你的代码

    $ node -r dotenv/config your_script.js
    

    这里是解释:

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

    【讨论】:

      【解决方案2】:

      我建议你使用名为cross-env 的 NPM 模块。无论平台如何,它都允许在命令行上添加特定的环境变量。话虽如此,您可以尝试:

      $ cross-env PORT=2344 yarn start:dev
      

      【讨论】:

        【解决方案3】:

        您可以在 Windows 命令提示符下使用&(或&&)链接命令。要设置环境变量,您需要使用set 命令。
        结果应如下所示:set PORT=1234 && yarn start:dev

        HTH、GL、HF :)

        【讨论】:

          【解决方案4】:

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

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

          2. 在其中定义 PORT。在我的情况下,.env 文件的内容将是,

          PORT=2344
          1. 运行 yarn start:dev

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

          【讨论】:

          • 我认为只有使用默认情况下不存在的 dotenv 模块时才有效。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-03
          • 2013-12-29
          • 1970-01-01
          相关资源
          最近更新 更多