Переменная Node process.env в функции eval () дает другой результат - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть приложение реакции, работающее в узле с рендерингом на стороне сервераВ моей тестовой среде для следующей переменной среды задано значение test через kubernetes: process.env.NODE_ENV.

Когда я запускаю следующие две команды, они дают разные результаты.Я ожидаю, что значение всегда будет test.

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

Почему-то похоже, что переменная сначала интерпретируется как development (что может произойти в моем коде, если она не определена), но как-то правильно интерпретируется как test eval() function.

Что может заставить узел по-разному интерпретировать значение между двумя выражениями?

EDIT: добавлен kubernetes yaml config.
Переменные $ {} заменяются на DevOps Azure во времяпроцесс выпуска.

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}

1 Ответ

0 голосов
/ 07 декабря 2018

Кажется, я нашел причину проблемы.
Мы используем веб-пакет для объединения (о котором я, возможно, должен был упомянуть), и в коде сервера, который выводил веб-пакет, я вижу, что он разрешил process.env.NODE_ENV встатическое значение, но оно не делает то же самое для eval(process.env.NODE_ENV).
Кажется, мой пост был ненужным, но я надеюсь, что он может кому-то помочь в будущем.

...