前提・実現したいこと
herokuで公開されているNode.jsのサンプルプログラムを手順に沿って再現しています。
このサンプルプログラムの最後にあるHeroku postgresqlデータベースとの接続においてSSL connection errorが発生してしまい、解決策が見当たらないためご質問させていただきました。
あまりSSL接続について知識が多くあるわけでも無い初学者です。
発生している問題・エラーメッセージ
username@mbp node-js-getting-started % heroku local [OKAY] Loaded ENV .env File as KEY=VALUE Format 12:02:19 AM web.1 | Listening on 5000 12:02:23 AM web.1 | Error: The server does not support SSL connections 12:02:23 AM web.1 | at Socket.<anonymous> (/Users/username/Desktop/node-js-getting-started/node_modules/pg/lib/connection.js:92:35) 12:02:23 AM web.1 | at Object.onceWrapper (events.js:418:26) 12:02:23 AM web.1 | at Socket.emit (events.js:311:20) 12:02:23 AM web.1 | at addChunk (_stream_readable.js:294:12) 12:02:23 AM web.1 | at readableAddChunk (_stream_readable.js:275:11) 12:02:23 AM web.1 | at Socket.Readable.push (_stream_readable.js:209:10) 12:02:23 AM web.1 | at TCP.onStreamRead (internal/stream_base_commons.js:186:23)
該当のソースコード
app.js
1const { Pool } = require('pg'); 2 3const pool = new Pool({ 4 connectionString: "postgres://username:user@localhost:5432/mylocal", 5 ssl: true 6}); 7 8const cool = require('cool-ascii-faces') 9const express = require('express') 10const path = require('path') 11const PORT = process.env.PORT || 5000 12 13express() 14 .use(express.static(path.join(__dirname, 'public'))) 15 .set('views', path.join(__dirname, 'views')) 16 .set('view engine', 'ejs') 17 .get('/', (req, res) => res.render('pages/index')) 18 .get('/db', async (req, res) => { 19 try { 20 const client = await pool.connect() 21 const result = await client.query('SELECT * FROM test_table'); 22 const results = { 'results': (result) ? result.rows : null}; 23 res.render('pages/db', results ); 24 client.release(); 25 } catch (err) { 26 console.error(err); 27 res.send("Error " + err); 28 } 29 }) 30 .get('/cool', (req, res) => res.send(cool())) 31 .get('/times', (req, res)=> res.send(showTimes())) 32 33 .listen(PORT, () => console.log(`Listening on ${ PORT }`))
試したこと
https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js
こちらのページで指摘されているsslについて
heroku pg:credentials:url
のコマンドで調べましたがドキュメントで求められているようにsslmode=requireになっていることは確認できました。
参考URL
https://devcenter.heroku.com/articles/getting-started-with-nodejs#provision-a-database
補足情報(FW/ツールのバージョンなど)
postgresqlはherokuのドキュメントにある
https://postgresapp.com/
こちらのアプリケーションを使用して、heroku postgres上のデータベースからpullしてローカルのデータベースに納めています。
psql --version
=> psql(PostgreSQL) 12.1
heroku --version
=>heroku/7.39.3 darwin-x64 node-v12.16.2
回答1件
あなたの回答
tips
プレビュー