我正在将 React 应用程序部署到我的 Apache 服务器。
我可以在 my-ip:5001 上访问该应用程序,但是当我转到我的域时,它给了我 “404 找不到请求的路径”。顺便提一句。在使用 React 之前,域已设置并使用 html 文件。
我做了
npm run build
并将构建文件夹放置在我的服务器的根目录中。
未对 package.json 文件进行任何更改。
我使用以下方式运行服务器:
serve -s -l 5001
Apache 配置文件:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName somedomain.com
ServerAlias www.somedomain.com
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:5001/
ProxyPassReverse / http://localhost:5001/
</VirtualHost>
</IfModule>
知道这里会发生什么吗?
从 /build 文件夹内运行serve -s。例子
C:\Users\zafriha\Desktop\myProject>build>cd..
C:\Users\zafriha\Desktop\myProject>npm install -gserve
C:\Users\zafriha\Desktop\myProject>serve -s build
有同样的问题。 在终端中执行nx重置解决了它。
nx reset
您应该运行生产模式的命令,例如“npm run start”,而不是使用“serve”。 (也适用于 Dockerfile)
新答案: 无需在服务器上运行serve命令。 只需将构建文件夹放在服务器上即可。在 .conf apache 文件内使 DocumentRoot 路径指向构建文件夹。
旧答案: 更改这些行:
ProxyPass / http://localhost:5001/
ProxyPassReverse / http://localhost:5001/
至:
ProxyPass / http://my-server-ip:5001/
ProxyPassReverse / http://my-server-ip:5001/
问题解决了