最近,我需要在同一服务器上运行两个Inertia.js应用程序,并且这两个应用程序都使用SSR。为了实现这一点,必须使用不同的端口,但是有一个陷阱可能会导致初始加载数据错误。
总结:仅更改ssr.ts
文件中的端口是不够的,您还需要通知Laravel使用新选择的端口。为此,您必须发布Inertia配置并在其中更改它。
第一个应用程序
所以我需要在同一服务器上运行两个Inertia.js应用程序,因为两种情况下我都关心SEO,所以我希望使用SSR。我正在使用Laravel和Laravel Forge,因此第一个应用程序的安装非常简单直接。只需创建一个新站点,安装仓库并启用SSR。您可以使用位于应用程序选项卡中的应用程序内置面板切换Inertia SSR
。这将为您创建一个新的守护进程(php artisan inertia:start-ssr
),一切正常。
第二个应用程序
到目前为止一切都很好。您可以检查您的应用程序,检查源代码,一切都应该按预期工作。那么,让我们用第二个应用程序重复同样的步骤。一切都相同,看起来它正在正常工作。但是,如果您检查新的守护进程日志,您会发现一些关于地址正在使用的错误。因此,显然我们需要更改端口,首先我们应该查看文档。文档中并不完全清楚如何找到说明,但是在旧文档中有一个部分,在那里有以下的注意
默认情况下,Inertia的SSR服务器将在端口13714上运行。然而,您可以通过向createServer方法提供一个第二个参数来修改这一设置。
所以我们开始了我们的ssr.ts
文件,并可以将端口作为createServer方法的第二个参数提供。所以createServer(..., 13715)
,看吧!我们完成了,对吗?!不幸的是,还没有。如果您不小心部署了它,看起来像是在正常工作。但如果您仔细检查真正的源代码(在Chrome中:查看 -> 开发者 -> 查看源文件)您可以看到来自第一个应用程序的数据!怎么会这样?我们仍然需要告诉Laravel实际上使用新的端口与SSR服务器通信。
更改Laravel的端口
在尝试找出如何更改Laravel的端口时,我偶然发现了一篇极好的文章,我必须对作者表示极大的敬意,因为他们让我能够迅速修复这个问题,而不会浪费太多时间。
关键在于使用以下命令发布Inertia的配置文件
php artisan vendor:publish --provider "Inertia\ServiceProvider"
然后更改以下属性的url端口号ssr.url
'ssr' => [
'url' => 'http://127.0.0.1:13715',
],
就这些。现在一切都应该正常工作了。
我希望这能帮助一些避免这个错误,并快速解决这个问题。再次感谢moay的文章,下次再见,
Tony。
driesvints, haosmos 喜欢这篇文章