2012-04-10 100 views
5

我正在使用Node.js應用程序,並且正在使用公開我的twitter API令牌/機密的config.js文件。我這樣做是因爲我計劃在完成後開放源代碼應用程序,並且希望保留這些私人文件(並因此已將該文件放入我的文件夾.gitignoreHeroku在heroku上找不到本地模塊(Node.js)

不管怎樣,對於我的問題 - m到處下面的錯誤日誌:

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

本地運行的工頭和Procfile(如heroku的文檔說的那樣)work gre在。但是,我很困惑,爲什麼當我要求本地文件時它給了我一個錯誤。 config.js與我的app.js位於同一目錄級別,因此要求它的路徑是正確的。

編輯:下面是我使用的app.js的代碼部分:

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

感謝 - 任何幫助將不勝感激!

+0

你有沒有試過從你的命令行開始?它說什麼 ? – Dhiraj 2012-04-10 03:00:57

+0

嘿@userD,是的 - 我可以成功地做到這一點(注意我的問題中的第二個到最後一段)。 =( – Connor 2012-04-10 03:05:13

+0

是否有可能顯示代碼,以便調試可能很容易 – Dhiraj 2012-04-10 03:19:35

回答

13

因爲您將config.js文件放在您的.gitignore中,所以它不會被推送到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 2012-04-10 22:05:37