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

Node process.env variable in eval() function gives different result

我有一个 React 应用 运行 在节点中使用服务器端渲染。 以下环境变量在我的测试环境中通过kubernetes设置为testprocess.env.NODE_ENV.

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

log.debug(process.env.NODE_ENV) // logs development
log.debug(eval('process.env.NODE_ENV')) // logs test

不知何故,看起来变量首先被解释为 development(如果它未定义,这可能会在我的代码中发生),但它以某种方式被 [= 正确解释为 test 18=]函数。

什么会导致节点以不同方式解释两个表达式之间的值?

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

apiVersion: v1
kind: ConfigMap
metadata:
  name: config
  namespace: ${KUBERNETES_NAMESPACE}
data:
  NODE_ENV: ${NODE_ENV}
---
kind: Service
apiVersion: v1
metadata:
  name: ${SERVICE_NAME}
spec:
  selector:
    app: ${SERVICE_NAME}
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 3000

  loadBalancerIP: ${IP_NUMBER}
  type: LoadBalancer


---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: ${SERVICE_NAME}
  labels:
    app: ${SERVICE_NAME}
spec:
  replicas: 2
  selector:
    matchLabels:
      app: ${SERVICE_NAME}

  template:
    metadata:
      labels:
        app: ${SERVICE_NAME}
    spec:
      containers:
      - name: ${SERVICE_NAME}
        image: {IMAGE_PATH}/${IMAGE_REPO}:${BUILD_NUMBER}
        ports:
        - name: http
          containerPort: 3000
          protocol: TCP
        resources: 
          limits:
            cpu: 100m
            memory: 1024Mi
          requests:
            cpu: 100m
            memory: 1024Mi
        envFrom:
        - configMapRef:
            name: config

      imagePullSecrets: 
      - name: ${IMAGEPULLSECRETNAME}

我好像找到问题的原因了
我们使用 webpack 进行捆绑(我可能应该提到这一点),并且在 webpack 输出的服务器代码中,我看到它已将 process.env.NODE_ENV 解析为静态值,但它对 eval(process.env.NODE_ENV).
看来我的 post 是不必要的,但我希望它能对以后的人有所帮助。