首页 > 解决方案 > 如何隐藏我的 API 密钥,同时让我的应用程序在 Heroku 中访问它们?

问题描述

我已经创建了一个 Node 应用程序,我终于准备好将它部署到 Heroku。在应用程序中,我使用了几个 API 密钥。这些我已经放在一个单独的文件中,并使用导出从我的应用程序中检索它们。然后我将 APIkey 文件添加到 .gitignore。从那以后,我将我的应用程序部署到 Heroku,但它没有用。

这是我尝试打开我的应用程序时的日志:

2018-12-19T23:38:14.937951+00:00 heroku[web.1]:使用命令启动进程npm start

2018-12-19T23:38:16.868566+00:00 应用[web.1]:

2018-12-19T23:38:16.868584+00:00 应用程序[web.1]: > 天气应用程序@1.0.0 开始/应用程序

2018-12-19T23:38:16.868587+00:00 app[web.1]:> 节点 app.js

2018-12-19T23:38:16.868588+00:00 应用程序[web.1]:

2018-12-19T23:38:17.072318+00:00 app[web.1]:开始地理编码

2018-12-19T23:38:17.291050+00:00 heroku[web.1]:状态从开始变为崩溃

2018-12-19T23:38:17.274770+00:00 heroku[web.1]:进程以状态 1 退出

2018-12-19T23:38:25.032443+00:00 heroku[web.1]:使用命令启动进程npm start

2018-12-19T23:38:28.893393+00:00 应用[web.1]:

2018-12-19T23:38:28.893409+00:00 应用程序[web.1]: > 天气应用程序@1.0.0 开始/应用程序

2018-12-19T23:38:28.893411+00:00 app[web.1]:> 节点 app.js

2018-12-19T23:38:28.893413+00:00 应用[web.1]:

2018-12-19T23:38:29.228923+00:00 app[web.1]:开始地理编码

2018-12-19T23:38:29.529491+00:00 应用 [web.1]: 内部/模块/cjs/loader.js:583

2018-12-19T23:38:29.529503+00:00 app[web.1]:抛出错误;

2018-12-19T23:38:29.529504+00:00 应用 [web.1]: ^

2018-12-19T23:38:29.529506+00:00 应用程序[web.1]:

2018-12-19T23:38:29.529508+00:00 app[web.1]:错误:找不到模块“../APIkeys”

2018-12-19T23:38:29.529510+00:00 app[web.1]: 在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)

2018-12-19T23:38:29.529512+00:00 app[web.1]: 在 Function.Module._load (internal/modules/cjs/loader.js:507:25)

2018-12-19T23:38:29.529514+00:00 app[web.1]: 在 Module.require (internal/modules/cjs/loader.js:637:17)

2018-12-19T23:38:29.529517+00:00 应用程序 [web.1]:在需要时 (internal/modules/cjs/helpers.js:22:18)

2018-12-19T23:38:29.529519+00:00 应用 [web.1]:在对象。(/app/geocode/geocode.js:4:16)

2018-12-19T23:38:29.529521+00:00 app[web.1]: 在 Module._compile (internal/modules/cjs/loader.js:689:30)

2018-12-19T23:38:29.529522+00:00 app[web.1]: 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

2018-12-19T23:38:29.529524+00:00 app[web.1]: 在 Module.load (internal/modules/cjs/loader.js:599:32)

2018-12-19T23:38:29.529526+00:00 app[web.1]: 在 tryModuleLoad (internal/modules/cjs/loader.js:538:12)

2018-12-19T23:38:29.529528+00:00 app[web.1]: 在 Function.Module._load (internal/modules/cjs/loader.js:530:3)

2018-12-19T23:38:29.546841+00:00 应用 [web.1]:npm 错误!代码生命周期

2018-12-19T23:38:29.547798+00:00 应用 [web.1]:npm 错误!错误号 1

2018-12-19T23:38:29.549579+00:00 应用 [web.1]:npm 错误!天气应用@1.0.0 开始:node app.js

2018-12-19T23:38:29.549782+00:00 应用 [web.1]:npm 错误!退出状态 1

2018-12-19T23:38:29.550057+00:00 应用 [web.1]:npm 错误!

2018-12-19T23:38:29.550295+00:00 应用 [web.1]:npm 错误!在 weather-app@1.0.0 启动脚本中失败。

2018-12-19T23:38:29.550513+00:00 应用 [web.1]:npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。

2018-12-19T23:38:29.562868+00:00 应用[web.1]:

2018-12-19T23:38:29.563140+00:00 应用 [web.1]:npm 错误!可以在以下位置找到此运行的完整日志:

2018-12-19T23:38:29.563302+00:00 应用 [web.1]:npm 错误!
/app/.npm/_logs/2018-12-19T23_38_29_554Z-debug.log

2018-12-19T23:38:29.673736+00:00 heroku[web.1]:状态从开始变为崩溃

2018-12-19T23:38:29.648927+00:00 heroku[web.1]:进程以状态 1 退出

2018-12-19T23:38:51.067585+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=desolate-eyrie- 91272.herokuapp.com request_id =a200b9fa-8f0b-4d33-a1d2-eb990b0bd035 fwd="158.248.240.182" 测功机=连接=服务=

现在这是我的第一个真正的应用程序,所以我的经验是有限的,很可能我的方法是不正确的。我的问题是:如果我的 APIkey 不应该被添加并因此隐藏在我的 .gitignore 中,那么我应该使用什么方法来隐藏我的密钥但仍然让 Heroku 能够运行我的应用程序?我的应用程序通过npm start使用 app.js在本地工作。

让我知道是否需要更多信息。

标签: node.jsherokunpmdeploymentapi-key

解决方案


我想让你知道我已经解决了我的问题。我误解了 .gitignore 实际上做了什么。相反,我使用了一个简单的环境文件,它就像一个魅力


推荐阅读