2017-11-07 4 views
0

각도 2/4 앱이 있으며 노드 server.js을 제공합니다. 환경 변수 (백엔드 엔드 포인트는 dev에 대해 localhost이고 자극을위한 다른 엔드 포인트)에 액세스하려고합니다. 중요하다면,이 앱 (백엔드 앱은 물론)은 Heroku에 배치 될 예정입니다.각도 2의 환경 변수

나는이 문제를 해결하기위한 방안을 찾는 노력했지만, 내가 찾은 모든 것이 ng build 플래그 --env에 따라 그들 사이에 교환 한 후 여러에게 environment.ts 파일 (각 구성 1)을 사용하고, 이어질 것으로 보인다. 하지만 구성과 소스 코드가 섞여있는 것처럼 나는이 솔루션에 대해 불안합니다. 또한 끝점/구성이 변경 될 때마다 (가능한 경우) 다시 빌드/재배포해야하는 것을 피하고 싶습니다.

스프링 부트에서는 속성 파일에 ${PORT:8080}과 같은 구성을 사용하는 데 익숙합니다. 과거에 복수 파일 .properties을 만들었지 만, 때로는 그렇게하기가 더 간단하고 깨끗하다는 것을 이해합니다.

노드에서 저는 process.env.PORT || 8080과 같은 env 변수를 사용하는 데 익숙합니다. 내 각도 애플 리케이션 노드 server.js에 의해 제공되기 때문에, 나는 비슷한 일을 할 수 있어야한다고 생각합니다. 내 environments/environment.ts 파일에 process.env을 사용하려고 할 때, 나는 여러 environment 특성 파일을 작성하는 데 필요한하고 또는 대안이있는 경우 Cannot find name 'process'.

그래서 내 질문은, 본질적으로 오류를 얻을.

감사

+1

도움이됩니까? [환경 변수 유형 스크립트] (https://stackoverflow.com/q/40622116/691711) – zero298

+0

아닙니다. 그러나 타이 – junvar

답변

0

당신은 기본적으로 관계없이 설정 환경 변수 또는 서버의 설정 파일에 저장되어 있는지 여부, 두 가지 선택이있다. 클라이언트 측 코드에 필요하기 때문에 자산 번들의 일부로 제공해야하거나 별도 요청으로 가져와야합니다. 별도의 요청은 Ajax 호출이거나 나머지 번들과 별도로 제공되는 js 파일 일 수 있습니다.

이상적으로 클라이언트의 프로덕션 응용 프로그램과 비 프로덕션 응용 프로그램 간의 유일한 차이점은 데이터, 번들 밀도 (예 : 사용자가 물건을 축소하지 않으려는 dev에 있음) 및 URL에서 제공 한 URL . 그 밖의 모든 것은 소스 URL에서 찾을 수 있어야합니다.