[解決済み] MONGODB_URI は未定義です。
質問
このガイドに従ってFacebookのチャットボットを作ろうとしています。 https://medium.com/@viviancpy/part-1-facebook-chatbot-with-heroku-webhook-b14090a136c7
私はnodeやJavaScriptは全く経験がなく、主にPythonだけです。そこで、GitHubからコードを単純にコピーペーストしたのですが、(ステップ4で説明したように、"yarn start"で)実行しようとすると、このエラーが発生します。
MongooseError: このエラーは
uri
パラメータを
openUri()
は文字列でなければならず、 "undefined" を得ました。の最初のパラメータが文字列であることを確認してください。
mongoose.connect()
または
mongoose.createConnection()
は文字列です。
そこで、コードを見てみると、こんなものがありました。
const MONGODB_URI = process.env.MONGODB_URI;
var db = mongoose.connect(MONGODB_URI);
つまり、少なくともPythonでは、MONGODB_URI定数は未定義であるということになるのですが、その理由が分かりません。 パッケージ(と呼ばれるものだと思います)が足りないのかもしれませんし、このコードをWindowsで実行することの問題なのかもしれませんし、まったく別のことかもしれません。ググってみましたが、答えがわからないか、答えが見つからないかのどちらかです。
解決方法は?
<ブロッククオートprocess.envプロパティは、ユーザ環境を含むオブジェクトを返します。
これを読む
記事
について
process.env
をご覧ください。とは何かについて記事から引用します。
process.env
TL;DR 目的のため
グローバル変数process.envは、アプリケーションが使用するために実行時にNodeから注入され、アプリケーションが起動したときのシステム環境の状態を表します。例えば、システムにPATH変数が設定されている場合、process.env.PATHを通じてアクセスできるようになり、バイナリがどこにあるかを確認し、必要に応じて外部からの呼び出しを行うことができます。
とはいえ、あなたが直面している問題は、あなたの
MONGODB_URI
変数が
undefined
を定義していないため、エラーの通りです。あなたがたどった記事がこうなっているのは、ライターがHEROKUにデプロイして、そこで自動的に実行されるからです。そこで、この問題を解決するために(ローカルでアプリを実行したい場合)、次のことを行います。
1) ダウンロードとインストール MongoDB (まだの場合).
2) Package.JSONの中で、特に
"start": "node index.js"
. スタートスクリプトを更新して
"start": "MONGODB_URI=http://localhost:27017 node index.js"
(Frutyの回答より)。(Mongo ローカルサーバーの起動は PORT
27017
をデフォルトで使用します)。これはまず Mongo_URI をあなたのシステムの ur Mongo のローカルインスタンスに設定します。それから
Index.js
ファイル
関連
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] AWS lambda function error - Unable to import module 'index': エラー
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] バルク更新を行う。
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Nodejs: Errorを解決する方法。ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] エラーです。Expressでビューの検索に失敗しました
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] Express.js req.bodyが未定義です。
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。