axios 将ReactJs应用程序与GoDaddy中的NodeJs/Express服务器连接

ee7vknir  于 2022-12-12  发布在  iOS
关注(0)|答案(1)|浏览(160)

我们有一个带有Node/Express后端和MySQL数据库的React应用程序/网站。一切都在本地运行,但我们在部署后将后端与前端连接时遇到了问题。
我们的客户端使用GoDaddy与cPanel的共享主机。我们能够成功部署React应用程序,并获得一个在GoDaddy中运行的独立Node/Express服务器,该服务器可以连接到MySQL数据库,但无法将React应用程序连接到该服务器。
下面是我们服务器的连接部分:

app.use(cors({ credentials: true, origin: "http://the-website.com/" }));

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
  console.log(`Server is listening on port ${PORT}`);
});

const connection = mysql.createConnection({
  user: "theUser",
  host: "localhost",
  password: "thePassword",
  database: "theDatabase",
});

下面是React应用程序的.htaccess文件的内容:

<IfModule mod_rewrite.c>

  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteRule . /index.html [L]
</IfModule>

有没有办法通过这个.htaccess文件将React应用程序连接到端口3000?
我遇到了这个StackOverflow问题,它使用以下代码将React应用程序与Node服务器连接起来:

RewriteEngine on
RewriteRule  (.*)  http://localhost:3000/$1  [P,L]

但我一直没有成功地让这个解决方案为我工作。
或者,当我们在本地开发应用程序时,它使用Axios调用,如下所示:

const MoveToProfile = async () => {
      const formData = new FormData();
      formData.append('email', inputEmail.current.value);
      formData.append('password', inputPassword.current.value);
      
      try {
        await axios.post("http://localhost:3000/login", formData).then((response) => {
          if (response.data.auth) {
      ...

部署后,我们还尝试在Axios调用中指定端口:

const MoveToProfile = async () => {
      const formData = new FormData();
      formData.append('email', inputEmail.current.value);
      formData.append('password', inputPassword.current.value);
      
      try {
        await axios.post("http://the-website.com:3001/login", formData).then((response) => {
          if (response.data.auth) {
      ...

但这只会导致页面超时。
任何见解/帮助都将不胜感激。

djmepvbi

djmepvbi1#

2个选项:

  • 使用go-daddy主机网络面板(如果有)或ufw(防火墙)(如果安装在服务器上)打开服务器上的端口3001(或检查godaddy配置,端口3001是活动的)
  • ufw命令:ufw允许3001
  • 为Express应用程序创建一个反向代理(使用nginx或apache配置),这样你就可以访问它-(更安全的IMO)

或:I have Godaddy Shared Web Hosting I need to host node.js website can host site?

相关问题