我有一个NodeJS服务器项目在本地运行良好。连接变量存储在config.js文件中。这个文件包含在我的gitignore中。代码的编写方式主要是使用系统环境变量,如果没有出现,请从config.js中提取。
我已经设置了一个Azure网络应用程序,通过我们的Git存储库进行持续集成。该应用程序正在部署正常,但显然没有config.js。
对该应用的API调用返回404错误。查看诊断日志,我发现请求正确,并且出现如下错误:
Buffer="The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."
我没有看到更多细节,也不确定如何获取细节。我认为造成错误的原因是需要配置文件,这显然被git忽略了,因此没有进入Web应用程序。但是,当我删除import语句和对config.js的引用时,错误仍然存在。
所以,有两个问题:
1)我如何以更系统的方式测试这个假设,而不仅仅是反复试验?
2)将来如何避免此类错误?
答案 0 :(得分:0)
好的,通过Stephen Grider的出色Node+React course on Udemy得到了一个很好的答案。基本上,您需要三个文件:一个配置文件,它根据环境(生产与否)导入另外两个文件中的一个。这两个文件导出具有相同键的对象,但是从环境(生产中)或硬连线(在开发中)中提取的值.deit文件在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'
};