2012-04-10 24 views
5

私はNode.jsアプリケーションで作業しています。私のtwitter APIトークン/シークレットを公開するconfig.jsファイルを使用しています。私はこれをやっている、私はそれを完了した後にアプリケーションをオープンソース化する予定であるので、それらを非公開にしておきたいと思います。メートル以下のエラーログを取得:Herokuはheroku(Node.js)のローカルモジュールを見つけることができません

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ある、と私はやっている:それはしていないのですから、私のアプリでvar config = require('./config')を、私はそれが私のpackage.jsonファイルに依存関係としてリストされていません。 NPM。

foremanとProcfileでローカルに実行する(herokuのドキュメントのように)greで。しかし、なぜローカルファイルが必要なときにエラーが出るのか混乱しています。 config.jsは私のapp.jsと同じディレクトリレベルにありますので、それを要求するパスは正しいです。

EDIT:以下は、私がapp.jsに使用していたコードの一部です:

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

おかげで - 任意の助けいただければ幸いです!

+0

コマンドラインからformean startを試してみましたか?それは何を言いますか? – Dhiraj

+0

ちょっと@userD、はい - 私はそれを正常に行うことができます(私の質問の最後の段落に2番目に注意してください)。 = – Connor

+0

デバッグが簡単にできるようにコードを表示することは可能ですか? – Dhiraj

答えて

13

.gitignoreconfig.jsファイルを置くので、あなたが意図したように、それはHerokuサーバーにプッシュされていません。あなたがやりたいこと言うことについて、あなたは一般的に、あなたのアプリケーションに読み込まれる環境変数を設定するHeroku's config varsを使用します。

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

を次に、あなたのapp.jsファイルにあなたがこれらの環境変数にアクセスすることができます

var token = process.env['TWITTER_TOKEN']; 
var secret = process.env['TWITTER_SECRET']; 
+0

それは意味があります - 私はそれについても考えていませんでした。 – Connor

関連する問題