由于gitignore(?)而将NodeJS项目部署到Web App-config.js中断

时间:2017-10-15 13:38:47

标签: node.js azure continuous-integration azure-web-sites

我有一个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)将来如何避免此类错误?

1 个答案:

答案 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'
};