【问题标题】:How does nodejs read environment variables set in command line?nodejs如何读取命令行中设置的环境变量?
【发布时间】:2018-07-22 04:24:16
【问题描述】:

我想问一个愚蠢的问题,但我已经用谷歌搜索了一段时间,但找不到令人满意的答案。 SO也没有这样的讨论,只有How to set NODE_ENV to production/development in OS XHow can I set NODE_ENV=production on Windows?

要在一行中运行一个又一个命令,我们通常通过;(或&&)加入它们

所以我假设我应该像 PORT=3000 ; node server.jsexport PORT=3000; node server.js 这样运行命令,就像 PORT=3000 ; echo $PORT 一样

但我们只是在PORT=3000 node server.js(不带;&&)之间放了一个空格,然后将PORT读入process.env.PORT.@shell如何让nodejs获取环境变量?如果有人能显示nodejs代码会更好。

----- 更新 ------

我对这种 shell 语法感到困惑的原因(根据我的有限知识)是我认为 Unix 命令行的一般格式是

command options(s) filename(s)

中间的空格用于分隔命令与选项和文件名。那么如何使用它来分隔 2 个命令呢?

【问题讨论】:

  • 为什么你认为它只在节点可用?做PORT=3000 echo Qiulang
  • 我想你是想帮忙,但我的理解是在两个命令之间放置一个空格是行不通的。这是我的问题。
  • 我说它不是 Nodejs 特定的,所以你不会得到任何 Nodejs 代码。不确定,但它是 shell 语法的一部分
  • @Qiulang 老兄,我认为它有效的语法,你可以尝试使用PORT=1000 echo 'hello' && echo 'world',如果前半部分失败,&& 之后的所有内容都不会被执行。
  • @Xlee 我会建议你尝试 PORT=1000 echo $PORT ,你可以看到结果是空的。即 PORT 未设置

标签: node.js bash shell environment-variables


【解决方案1】:

查了nodejs文档,找到了答案https://nodejs.org/api/process.html#process_process_env

所以它是environ,而不是 2 个单独的命令,

Bourne 风格的 shell 支持语法

       NAME=value command

只在范围内创建环境变量定义 执行命令的进程。

或如bash manual 3.7.4 解释的那样。

For python,是os.environ['NAME']

这也是它不能在windows上运行的原因:How can I set NODE_ENV=production on Windows?

Windows 用户注意事项,作为 daw 的评论“set NODE_ENV=production &&”在变量后面添加了一个空格,并且不要使用单引号/双引号。

我几乎想删除我的问题,我感到很尴尬。我把它放在这里,以防其他人也有这个疑问。或者其他人可以进一步解释 environ 或节点如何将其读入 process.env 对象。

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 2013-09-25
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多