【问题标题】:Using env-cmd to pass bash env variables into new shell [duplicate]使用 env-cmd 将 bash 环境变量传递到新的 shell [重复]
【发布时间】:2021-04-24 03:19:51
【问题描述】:

我正在尝试使用两个预先存在的 ENV 变量 DOMAIN 和 URL_PREFIX 构建一个环境变量:PUBLIC_URL 用于反应应用程序。我希望在 npm 脚本中运行“react-scripts build”命令之前这样做。

我使用 .env-cmdrc.json 文件将多个环境变量存储在一个地方。我目前正在构建 var 并像这样调用命令。

env-cmd -e shared,staging --use-shell "export PUBLIC_URL=https://$DOMAIN/$URL_PREFIX && react-scripts build"

我正在从包含.env-cmdrc.jsonpackage.json 的“客户端”文件夹运行命令。它会导致以下错误,表明变量从未展开。

  throw new ERR_INVALID_URL(input);
  ^

TypeError [ERR_INVALID_URL]: Invalid URL: https:///
    at onParseError (internal/url.js:259:9)
    at new URL (internal/url.js:335:5)
    at getPublicUrlOrPath (/home/nathanielw/.nvm/versions/node/v14.16.0/lib/node_modules/react-scripts/node_modules/react-dev-utils/getPublicUrlOrPath.js:36:28)
    at Object.<anonymous> (/home/nathanielw/.nvm/versions/node/v14.16.0/lib/node_modules/react-scripts/config/paths.js:26:25)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18) {
  input: 'https:///',
  code: 'ERR_INVALID_URL'
}

变量 $DOMAIN 和 $URL_PREFIX 被 react-scripts 构建命令很好地使用:env-cmd -e shared,staging react-scripts build 或只是 printenv DOMAIN,但它们不会出现在其他命令中,例如在 echo $DOMAIN 中打印出来

我认为在命令之间传递环境时我遗漏了一些东西,但我不明白为什么env-cmd -e shared,staging printenv DOMAIN 会起作用,但env-cmd -e shared,staging echo $DOMAIN 不会。

【问题讨论】:

    标签: bash environment-variables env-cmd


    【解决方案1】:

    strange behavior of 'echo' in 'env' bash

    找到一个相关问题。我只需要切换到单引号而不是双引号,以防止在运行 env-cmd 并设置这些变量之前评估 $DOMAIN。其他一切都很好。

    【讨论】:

    • 如果这在另一个问题中得到解决,您应该将其标记为重复,而不是发布包含链接的答案。
    猜你喜欢
    • 2020-02-13
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2021-06-24
    • 2017-01-17
    • 2021-04-30
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多