【发布时间】:2020-07-27 02:45:30
【问题描述】:
我有一个 MERN 堆栈部署到 heroku,在我的应用程序中我有一个联系表单,可以向我发送电子邮件。这自然会使用发布请求和后端设置。我认为 heroku 会启动我的后端服务器,因为我的应用程序上唯一的 dyno 是应该启动服务器的“npm start”。但是,该服务器仅设置为在我选择的任何端口上在我的本地主机上运行,所以我想它不起作用是有道理的。我不太确定所有这些东西是如何工作的。我确实知道当我在我的计算机上加载并运行服务器时一切正常,但是当我关闭该服务器时,我的 heroku 应用程序将无法再访问后端。我的设置方式有问题吗?我几乎复制了示例代码,所以我不确定我是否做错了什么,或者我是否真的希望这个服务器在 localhost:PORT 上运行永恒。
任何帮助将不胜感激。谢谢!
编辑:我想我看到了错误,但我不确定如何修复它。我用这一行发送 post 请求:
axios.post( "http://localhost:5000/sendEmail" || "http://ethanmeitz.com/sendEmail" , data)
.then(res => console.log(res.data))
.then((response) => {
if(response.statusText === "OK" && response.status >= 200 && response.status < 300) {
return response.json()
} else {
throw new Error("Server can't be reached!")
}
})
.then((json) => {
console.log("It is JSON")
})
.catch(err => console.log('Could not send email: ' + err));
}
但如果 heroku 更改端口,这将不起作用。鉴于 heroku 可能会更改端口并且环境变量仅在后端有效,我应该将发布请求发送到的 URL 是什么。
我尝试将帖子请求更改为:
axios.post( "http://localhost:5000/sendEmail" || "/sendEmail" , data)
希望当我在端口 5000 上使用本地主机以及在相对路径有效时在我的网站上使用此功能。相反,它只是尝试发送第一个发布请求,即使认为服务器没有运行。我的使用方式有问题吗||这里?尝试同时发送一个帖子请求会是一个错误的解决方案吗??
【问题讨论】:
标签: javascript heroku server backend host