2017-10-15 132 views
0

我有一个NodeJS服务器项目在本地运行良好。连接变量存储在config.js文件中。这个文件包含在我的gitignore中。代码是以主要使用系统环境变量的方式编写的,如果这些代码不出现,请从config.js中提取。将NodeJS项目部署到Web App-config.js因gitignore而中断(?)

我已经通过我们的Git存储库建立了一个持续集成的Azure Web应用程序。该应用部署良好,但显然没有config.js。

对应用程序的API调用返回404错误。望着诊断日志,我看到的要求通过适当的到来,象这样的错误:

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

我没有看到任何比这更多的细节,不知道我怎样才能得到详细信息。我认为是什么导致了错误需要配置文件,这显然被git忽略,因此不会将其发送到web应用程序。但是,当我删除导入语句和对config.js的引用时,错误仍然存​​在。

于是,两个问题:

1)如何测试这个假设的不仅仅是试验和错误更系统的方式?

2)我将来如何避免这种错误?

+0

你有没有尝试在本地运行没有那个文件?这将导致验证该理论 –

回答

0

好的,通过Stephen Grider的优秀Node+React course on Udemy得到了很好的答案。基本上,你需要三个文件:一个配置文件,根据环境(生产与否)导入其他两个文件中的一个。这两个文件使用相同的密钥导出对象,但从环境(生产中)或硬连线(在开发中)中提取值。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' 
};