将NodeJS项目部署到Web App-config.js因gitignore而中断(?)
我有一个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)我将来如何避免这种错误?
好的,通过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'
};
你有没有尝试在本地运行没有那个文件?这将导致验证该理论 –