eval()函数中的节点process.env变量给出不同的结果

时间:2018-12-07 18:33:03

标签: javascript node.js kubernetes eval serverside-rendering

我在服务器端渲染的节点上运行了一个React应用。 在我的测试环境中,以下环境变量通过kubernetes设置为test

当我运行以下两个命令时,它们会给出不同的结果。我希望该值始终为process.env.NODE_ENV

test

不知何故,看起来该变量首先被解释为log.debug(process.env.NODE_ENV) // logs development log.debug(eval('process.env.NODE_ENV')) // logs test (如果未定义,在我的代码中可能会发生),但是{{1}正确地解释为development }功能。

什么会导致节点在两个表达式之间不同地解释该值?

编辑:添加了kubernetes yaml配置。
在发布过程中,$ {}变量被Azure DevOps取代。

test

1 个答案:

答案 0 :(得分:3)

我似乎已经找到了问题的原因。 我们使用webpack进行捆绑(我应该提到),并且在webpack输出的服务器代码中,我看到它已将process.env.NODE_ENV解析为静态值,但对{{ 1}}。
看来我的帖子没有必要,但我希望它对以后的工作有所帮助。