7

私は Node.js アプリに取り組んでおり、twitter API トークン/シークレットを公開するconfig.jsファイルを使用しています。私がこれを行っているのは、完成後にアプリケーションをオープンソース化する予定であり、それらを非公開にしたい (したがって、そのファイルを.gitignore.

とにかく、私の質問に - 私は次のエラーログを取得しています:

2012-04-09T22:41:12+00:00 app[web.1]: node.js:134
2012-04-09T22:41:12+00:00 app[web.1]:         ^
2012-04-09T22:41:12+00:00 app[web.1]:         throw e; // process.nextTick error, or 'error' event on first tick
2012-04-09T22:41:12+00:00 app[web.1]: Error: Cannot find module './config'
2012-04-09T22:41:12+00:00 app[web.1]:     at require (module.js:348:19)
2012-04-09T22:41:12+00:00 app[web.1]:     at Function._load (module.js:266:25)
2012-04-09T22:41:12+00:00 app[web.1]:     at Function._resolveFilename (module.js:320:11)
2012-04-09T22:41:12+00:00 app[web.1]:     at Object.<anonymous> (/app/app.js:6:19)
2012-04-09T22:41:12+00:00 app[web.1]:     at Module._compile (module.js:404:26)
2012-04-09T22:41:12+00:00 app[web.1]:     at Object..js (module.js:410:10)
2012-04-09T22:41:12+00:00 app[web.1]:     at Function._load (module.js:297:12)
2012-04-09T22:41:12+00:00 app[web.1]:     at EventEmitter._tickCallback (node.js:126:26)
2012-04-09T22:41:12+00:00 app[web.1]:     at Module.load (module.js:336:31)
2012-04-09T22:41:12+00:00 app[web.1]:     at Array.<anonymous> (module.js:423:10)
2012-04-09T22:41:13+00:00 heroku[web.1]: State changed from starting to crashed
2012-04-09T22:41:13+00:00 heroku[web.1]: Process exited with status 1

私のファイル名はで、アプリconfig.jsで: を実行しています。NPM にないためvar config = require('./config')、ファイルに依存関係としてリストされていません。package.json

foreman と Procfile を使用してローカルで実行すると (heroku のドキュメントで説明されているように) うまく機能します。しかし、ローカル ファイルが必要なときにエラーが発生する理由がわかりません。config.jsは my と同じディレクトリ レベルにapp.jsあるため、必要なパスは正しいです。

編集:以下は、私が使用しているコードの一部ですapp.js:

var express     = require('express')
  , sys         = require('sys')
  , request     = require('request')
  , config      = require('./config')

ありがとう - どんな助けでも大歓迎です!

4

1 に答える 1

15

config.jsあなたが意図したように、ファイルをあなたの中に入れたので、.gitignoreそれはHerokuサーバーにプッシュされていません。やりたいことについては、通常、Heroku の構成変数を使用して、アプリケーションによって読み取られる環境変数を設定します。

$ heroku config:add TWITTER_TOKEN=<token> TWITTER_SECRET=<secret>

次に、app.jsファイルでこれらの環境変数にアクセスできます。

var token = process.env['TWITTER_TOKEN'];
var secret = process.env['TWITTER_SECRET'];
于 2012-04-10T06:35:28.433 に答える