无法连接到heroku上的数据库插件

83qze16e  于 2023-11-19  发布在  其他
关注(0)|答案(3)|浏览(130)

我试图使用命令Heroku pg:psql连接到我的数据库插件在heroku,但得到了下面的响应

--> Connecting to postgresql-regular-61345
unrecognized win32 error code: 123could not find a "psql" to execute
unrecognized win32 error code: 123could not find a "psql" to execute
psql: fatal: could not find own program executable
 !    psql exited with code 1

字符串
在使用heroku logs --tail命令后,我得到了以下错误

sh: 1: nodemon: not found
Process exited with status 127
State changed from starting to crashed


我还可以看到所有进程都停止了SIGTERM,进程退出时的状态为143
我采取的解决措施
1.已验证环境变量是否具有我PC上已安装的postgress 14的路径
1.在我的后端代码中向根文件添加了一个procfile,并指定了“web:node matthewfaceappback/server.js in the file”
1.使用process.env.PORT将我的设置端口更改为变量端口|| 3000
1.设置所有的环境变量,包括我的数据库网址(默认设置)的配置变量在heroku
1.已验证是否有启动脚本
1.使用“npm update”更新了我所有的软件包。在这样做之后,我开始遇到进程停止与SIGTERM和进程退出状态143的问题
1.我将nodemon从devendencies移动到dependencies。nodemon版本是2.0.15
1.在package.json中,我输入了一个engines参数,在我的例子中使用了node的版本
{“engines”:{“node”:“14.17.4”}}
1.我使用“heroku restart”重新启动heroku
下面是错误的屏幕截图链接

https://www.dropbox.com/s/5bdbyi9e99lbxhu/pic1.PNG?dl=0
https://www.dropbox.com/s/41euniaes5q68c9/pic2.PNG?dl=0
https://www.dropbox.com/s/50oqzbwmwrqogax/pic3.PNG?dl=0

yxyvkwin

yxyvkwin1#

将nodemon放回devendencies中,并将其作为第二个节点脚本添加到package.json中:

"scripts": {
  "start": "node matthewfaceappback/server.js",
  "dev": "nodemon matthewfaceappback/server.js"
},

字符串

zxlwwiss

zxlwwiss2#

这两个错误是完全无关的。

数据库连接错误

第一个问题,我相信这是你目前真正关心的问题,根据问题的标题,表明Heroku CLI无法在你的 * 本地 * 机器上找到PostgreSQL客户端。
该文档提出了以下建议

在Windows上设置Postgres

使用Windows installer在Windows上安装Postgres。
请记住更新PATH环境变量以添加Postgres安装的bin目录。该目录类似于:C:\Program Files\PostgreSQL\<VERSION>\binheroku pg:psql等命令依赖于PATH,如果PATH不正确,则不起作用。
如果你还没有在本地安装Postgres,那么就这样做吧。(这是个好主意,因为你应该在本地开发,而且你可能需要一个数据库。)
然后确保add its bin/ directory to your PATH environment variable

Nodemon错误

第二个问题是因为你试图在生产中使用nodemon。Heroku在构建Node.js应用程序后将其开发依赖项从Node.js应用程序中剥离出来,这通常是有意义的。Nodemon是一个 * 开发 * 工具,不应该用于生产托管。
根据package.json的内容,这可能很简单,只需将start脚本从nodemon some-script.js更改为node some-script.js即可。或者,您可以使用实际希望在Heroku上运行的命令添加Procfile

web: node some-script.js

字符串
参见Need help deploying a RESTful API created with MongoDB Atlas and Express

oymdgrw7

oymdgrw73#

确保PostgreSQL bin文件夹的系统PATH环境变量中的条目没有双引号(“)
2013年,Luis Gonzalo Constantini Rickel针对PostgreSQL 9.2.4提交了关于此psql.exe行为的错误#8472,但该错误从未得到解决,至少在2023年11月:https://www.postgresql.org/message-id/E1VPJrB-00071y-RR%40wrigleys.postgresql.org
你可以在安装了PostgreSQL 15的Windows上产生同样的问题.

path "c:\Program Files\PostgreSQL\15\bin";%path%

字符串
然后尝试运行psql.exe,你会得到这个错误:

C:\Windows\System32>psql -Upostgres
unrecognized win32 error code: 123could not find a "psql" to execute
Password for user postgres:


相比之下,

path c:\Program Files\PostgreSQL\15\bin;%path%


导致

C:\Windows\System32>psql -Upostgres
Password for user postgres:

相关问题