🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

1回答

980閲覧

デプロイするとDBに接続できない

退会済みユーザー

退会済みユーザー

総合スコア0

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

1クリップ

投稿2019/10/29 14:19

node.jsからpostgreSQLのDBに接続し、取得した値をexpressのapp.get()にアクセスしたhtmlに返すという処理を行っています。
それをherokuにデプロイしていますが、デプロイするとDBに接続されず、htmlに何も表示されないという状態に悩まされています。

ローカル環境では接続できており、値の取得、表示はできます。
デプロイ後にデベロッパーツールでエラーを見ると、503エラーと出ますが、原因不明で解決できませんでした。
イメージ説明

私の推測では、herokuでの公開先と、接続しようとしているDBのネットワークの問題なのかなと思っていますが、
まだ知識が足りず解決できずにいます。

エラー原因や解決法など、ご教示頂ければ幸いです。

その他
・DBはpgAdminでテスト用に作ったDBです。
・フォルダ構成は画像の通りです。
イメージ説明

javascript

1const express = require('express'); 2const app = express(); // expressアプリを生成する 3 4app.use(express.static('web')); // webフォルダの中身を公開する 5app.listen(process.env.PORT || 3000, function () { 6 console.log('http://127.0.0.1:3000') 7}) 8// postgreSQL接続に必要な情報 9const { Client } = require('pg'); 10const counter = 0; 11const client = new Client({ 12 user: 'ユーザー名', 13 host: 'ローカルホスト', 14 database: 'データベース名', 15 password: 'パスワード', 16 port: 5432 17}); 18 19// postgreSQL接続 20client.connect(err => { 21 if(err){ 22 console.error(err.stack); 23 } 24}); 25 26// アクセスしたhtmlにDBの値を返す 27app.get('/api/v1/texts',(req,res) =>{ 28 const query = "select id from personal order by id;"; 29 client.query(query) 30 .then(response => { 31 32 var id = response.rows; 33 res.json(id); 34 client.end(); 35 }) .catch(e => console.error(e.stack)) 36})

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

デベロッパーツールでのブラウザのエラーログてはなく、herokuで動作しているNode.jsのログを見ると良いと思います。

heroku logs

のコマンド実行で、ログの確認がてきたと思います。

それと、 host: 'ローカルホスト', でDBにつないでますが、、これって localhost や 127.0.0.1 などを指定してますかね?
その場合、ローカル環境ではローカル環境の 5432ポートに立ち上げているDBに接続しますが、herokuの環境で実行されればherokuの環境に接続しに行こうとします。
それでherokuでは5432ポートでDBなんか動いてないってことで接続のエラーになっているのかと思いました。

投稿2019/10/31 17:05

aaharu

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問