接続文字列が、説明されているgnerkusのようにすでに整形式であることが確実な場合、最後に確認する必要があるのはパスワードです。英数字以外の文字が含まれている場合は、それが問題の原因である可能性があります。 Node.jsまたはjavascript自体の動作のいずれかが原因のようです(pg-adminは初期パスワードを使用して接続できるため、よくわかりません)。
パスワードに'+'
が含まれていました および'/'
(gibberishで満たされた長いjsonを作成し、それをハッシュしてbase64文字列を生成することで取得されます)そして私は確かにあなたと同じエラーを受け取ります。 (接続文字列とデータベースのパスワードの更新から)それを取り除くと、正常に機能しています。
ああ、そして... '='
しかし受け入れられます。問題はデータベース側のURLデコードプロセスにあるように思われるためです。 '+'
を送信したとき 、' '
に置き換えられたと思います これにより、パスワードが正しくなくなります。そして'/'
エラーの根本的な原因である不正な形式のURLを引き起こしていました(これは見つかりませんでした)。この例を見てください。
postgres://username:sdkadady88da8+8ahdajd/[email protected]/database
余分な'/'
があることに気付くと思います これにより、間違ったURLが壊れます。したがって、protocol:// user:[email protected] / database
protocol:// [malformed user:[email protected]] / [malformed database name] / [some gibberish]
に変更されました その余分な'/'
のために 。
JSFを使用してアクセスする同僚が接続文字列を編集できる場合は、パスワードを両方で受け入れられるものに更新することをお勧めします。できない場合は、同じアクセス権を持つが、Node.jsから使用できるパスワードが異なる別のユーザー/ロールを作成する必要があります。
編集:またはさらに良いことに、ここでの議論によると、接続文字列のパスワード部分をエンコードしてみてください。彼らはそれがうまくいくと言います。すでにパスワードを変更しているので、わざわざ試してみませんでした。この問題はまだ発生しているため、上記の2つの提案のいずれかを実行する前に、最初に試してみることをお勧めします。