2016-07-06 9 views
3

は私がNode.jsのを使用してアプリケーションを構築し、Herokuの上にそれを展開したが、私は私のHerokuのログにエラーを取得しておいてください。HerokuののNode.jsの - そのようなファイルやディレクトリ、オープン「.env」

{ [Error: ENOENT: no such file or directory, open '.env'] errno: -2, code: 'ENOENT', syscall: 'open', path: '.env' }

これは、環境変数がないことを意味します。しかし、私はheroku/dashboard/config_varsで自分の環境変数を設定しました。さらに、私がタイプした場合:heroku config、それは私の環境変数のリストを表示します...

何が起こっているかもしれないか、私は何ができるか知っていますか?

注 - 「.gitignore」に「.env」を追加しました。

Thxで事前に!

+0

nodejsプロジェクト用の.envから環境変数をロードします。https://github.com/motdotla/dotenv – Mikhail

答えて

3

あなたのコードのどこかのような音で、.envファイルを開こうとしています。

あなたはそうしてはいけません。 MY_ENV_VARという環境変数にアクセスするには、node.jsコードのprocess.env.MY_ENV_VARを参照するだけです。

.gitignoreに.envを追加するのは正しいです。

開発環境では、環境変数の値を.envで設定します。これらは、 "heroku local"または "foreman start"によってアプリに渡されます。

Herokuでは、行ったように、「heroku config」(またはHerokuダッシュボード経由)で環境変数の値を設定します。

結論:node.jsアプリケーションが.envファイルを明示的にオープンしようとしているような場合を除いて、あなたがしたことはすべて正しいです。それは間違いです!

+1

hmm ..私の環境変数を使用するページは、私は 'require( 'dotenv')を持っています。 '...これが理由だろうか? –

+1

うん、それは問題だ。 DotEnvライブラリはデフォルトで.envファイルを探します。あなたの.gitignoreにあるので、.envファイルはHerokuにプッシュされません。 –

1

私は同じ問題を抱えていました。ここではどのように私は解決:

npm rm dotenv 
npm install -g foreman 
npm install foreman --save 

コメントアウトすべて:

require('dotenv').load(); 
+0

これは、ルートディレクトリにProcfileがあることを前提としています。 –

0

を私のために働いた別のオプションは、あなたのpackage.jsonでdotenvを更新しました。

関連する問題