我试图使用命令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 退出
解决步骤我已采取
验证环境变量是否具有在我的PC 上安装的postgress14的路径
在我的后端代码中向根文件添加了一个procfile;web:文件"中的node matthewfaceappback/server.js;
使用process.env.port||3000 将我的设置端口更改为可变端口
在heroku 中的配置变量上设置所有环境变量,包括我的数据库url(默认设置(
已验证有启动脚本
使用";npm更新";。在做了这件事之后,我开始预测进程以SIGTERM停止和进程以状态143退出的问题
我将nodemon从devDependencies移到了dependencies。nodemon版本为2.0.15
在package.json中,我使用节点的版本输入了一个引擎参数,在我的例子中是
{"发动机":{"节点":"14.17.4";}}
我用";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
将nodemon放回devDependencies中,并将其作为第二个节点脚本添加到package.json:中
"scripts": {
"start": "node matthewfaceappback/server.js",
"dev": "nodemon matthewfaceappback/server.js"
},
这两个错误完全无关。
数据库连接错误
根据问题的标题,我认为第一个问题是您目前真正关心的问题,它表明Heroku CLI在您的本地机器上找不到PostgreSQL客户端。
文件提出以下建议
在Windows上设置Postgres
使用Windows安装程序在Windows上安装Postgres。
请记住更新PATH环境变量以添加Postgres安装的
bin
目录。目录类似于:C:Program FilesPostgreSQL<VERSION>bin
。像heroku pg:psql
这样的命令依赖于PATH,如果PATH不正确,则不起作用。
如果您还没有在本地安装Postgres,请这样做。(无论如何,这是一个好主意,因为您应该在本地开发,并且可能需要一个数据库。(
然后确保将其bin/
目录添加到PATH
环境变量中。
Nodemon错误
第二个问题是因为您正试图在生产中使用nodemon。Heroku在构建Node.js应用程序后,将开发依赖关系从中剥离出来,这通常是有意义的。Nodemon是一个开发工具,不应该用于生产托管。
根据package.json
的内容,这可能很简单,只需将start
脚本从nodemon some-script.js
更改为node some-script.js
即可。或者,您可以添加一个Procfile
,其中包含您实际想要在Heroku:上运行的命令
web: node some-script.js
另请参阅需要帮助部署使用MongoDB Atlas和Express 创建的RESTful API