2017-10-15 1 views
0

로컬로 잘 실행되는 NodeJS 서버 프로젝트가 있습니다. 연결 변수는 config.js 파일에 저장됩니다. 이 파일은 내 gitignore에 포함되어 있습니다. 이 코드는 주로 시스템 환경 변수를 사용하는 방식으로 작성되며, 표시되지 않으면 config.js에서 가져옵니다.gitignore (?)로 인해 Web App-config.js가 NodeJS 프로젝트에 배포 됨

저는 Git 저장소를 통해 지속적으로 통합 된 Azure 웹 앱을 설정했습니다. 앱은 잘 배치되지만 config.js가없는 것은 분명합니다.

API 호출로 404 오류가 반환됩니다. 진단 로그를 보면, 내가 요청은 다음과 같이 제대로 통해 오는 및 오류보고 있어요 : 그보다 자세한 내용을 확인할 수 없습니다, 나는 세부 사항을 얻을 수있는 방법 확실하지 않다

Buffer="The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."

. 나는 그 오류를 일으키는 것은 분명히 자식에 의해 무시되고, 따라서 웹 응용 프로그램에 그것을하지 않는 구성 파일을 요구하고 있다고 가정. 그러나 가져 오기 문과 config.js에 대한 참조를 제거하면 오류가 계속 발생합니다.

그래서, 두 가지 질문 :

1) 어떻게 그냥 시행 착오를보다 더 체계적인 방법으로이 가설을 테스트합니까?

2) 향후 이러한 오류가 발생하지 않도록하려면 어떻게해야합니까?

+0

당신이 로컬로 실행하려고 했 그 파일 없인? 그러면 이론을 검증 할 수 있습니다. –

답변

0

좋아, Stephen Grider의 우수 Node+React course on Udemy을 통해 좋은 대답을 얻었습니다. 기본적으로 세 파일이 필요합니다. 환경에 따라 다른 두 파일 중 하나를 가져 오는 구성 파일 (생산 여부). 이 두 파일은 동일한 키를 사용하여 객체를 내 보냅니다. 그러나 환경에서 가져온 값 (프로덕션에서) 또는 하드 와이어 된 값 (dev에서). dev 파일은 gitignore에 나열되어 있습니다. 그런 다음 나머지 앱에서는 config.js를 가져 오거나 요구하고 거기에서 키를 사용하십시오.

그것은 다음과 같습니다

config.js :

if (process.env.node_ENV === 'production') 
{ 
    module.exports = require('./prod'); 
} else { 
    module.exports = require('./dev'); 
} 

prod.js :

module.exports = { 
    secret: process.env.JWT_KEY, 
    conn: process.env.COSMOS_CONN, 
    sgKey: process.env.SENDGRID_API_KEY, 
    googleClientID: process.env.GOOGLE_CLIENT_ID, 
    googleClientSecret: process.env.GOOGLE_CLIENT_SECRET 
}; 

dev.js :

module.exports = { 
    secret: 'xyz', 
    conn: '123', 
    sgKey: 'sdsddf', 
    googleClientID: 'ddcxcx.apps.googleusercontent.com', 
    googleClientSecret: 'dcvccfssfdas' 
}; 
관련 문제