1. ホーム
  2. node.js

[解決済み] MONGODB_URI は未定義です。

2022-02-19 07:52:24

質問

このガイドに従って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で実行することの問題なのかもしれませんし、まったく別のことかもしれません。ググってみましたが、答えがわからないか、答えが見つからないかのどちらかです。

解決方法は?

から プロセスに関するNode JSのドキュメント

<ブロッククオート

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 ファイル