代码之家  ›  专栏  ›  技术社区  ›  Boris K

正在将NodeJS项目部署到Web App config。gitignore(?)导致js中断

  •  0
  • Boris K  · 技术社区  · 8 年前

    我有一个NodeJS服务器项目在本地运行良好。连接变量存储在配置文件中。js文件。此文件包含在我的gitignore中。代码的编写方式主要使用系统环境变量,如果这些变量没有出现,请从配置中提取。js。

    我已经建立了一个Azure web应用程序,通过我们的Git存储库进行持续集成。应用程序部署良好,但显然没有配置。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 回复  |  直到 8 年前
        1
  •  0
  •   Boris K    8 年前

    好的,通过Stephen Grider的回答很好 Node+React course on Udemy . 基本上,您需要三个文件:一个配置文件,根据环境(生产或非生产)导入另外两个文件中的一个。这两个文件导出的对象具有相同的键,但值要么是从环境中提取的(在生产中),要么是硬连线的(在开发中)。开发文件列在gitignore中。然后,在应用程序的其余部分中,只需导入或需要配置。js并使用那里的键。

    看起来是这样的:

    配置。js:

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

    产品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
    };
    

    开发人员:

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