php 在Heroku应用程序上的Laravel中连接推送器通道时出错

4dc9hkyq  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(130)

我在连接Heroku上的Pusher通道到我的Laravel应用程序时遇到问题。它在本地工作,但在生产中它会出错。我已经在heroku和laravel的. env中将Pusher变量添加到i reavel变量中。

console.log错误:

Uncaught在示例化Pusher时,您必须传递应用密钥。
显示器覆盖变量

app_id = "1682617"
key = "4******************e"
secret = "3******************a"
cluster = "mt1"

资质发展

PUSHER_APP_ID=1682617
PUSHER_APP_KEY=c******************3
PUSHER_APP_SECRET=f******************1
PUSHER_HOST=ws-mt1.pusher.com

Bootstrap.js

import Echo from 'laravel-echo';

import Pusher from 'pusher-js';
window.Pusher = Pusher;

 window.Echo = new Echo({
   broadcaster: 'pusher',
   key: import.meta.env.VITE_PUSHER_APP_KEY,
   wsHost: import.meta.env.VITE_PUSHER_HOST ?? `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`,
   wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,
   wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,
   forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https',
   enabledTransports: ['ws', 'wss'],
 });
iih3973s

iih3973s1#

你不应该将**.env推送到Heroku,因为这是Heroku应用程序中配置变量的全部意义。它还建议您将带有敏感值的.env文件保存在Git存储库中,这也是您不想做的事情。
如果查看
bootstrap.js文件,您还会注意到它引用的环境变量带有VITE_*前缀,即:VITE_PUSHER_APP_KEY。所以当你(正确地)为Pusher(PUSHER_APP_ID等)设置配置变量时,你仍然需要设置前缀为VITE_*的等价物。
如果你还没有将nodejs构建包添加到你的应用中,你也应该添加。您需要在php构建包之外添加此功能。然后Heroku将在部署时运行您的npm run build,这将使用Heroku应用程序中的配置变量的值来构建您的JavaScript文件,而不是您之前运行它的地方的值(我猜要么是您的计算机,要么根本不是)。
总结如下:
1.从存储库中删除任何
.env文件:git rm -f .env
1.将nodejs构建包添加到Heroku应用
1.如果您已开始跟踪资产,请删除它们:git rm -rf public/hot && git rm -rf public/storage
1.在
.gitignore**文件中重新添加行,以忽略上述文件

  • 将配置变量添加到您的Heroku应用程序中,用于:
  • VITE_PUSHER_APP_KEY
  • VITE_PUSHER_APP_CLUSTER
  • VITE_PUSHER_HOST
  • VITE_PUSHER_PORT
  • VITE_PUSHER_SCHEME
  • 承诺和推动。Heroku现在应该在部署时运行npm run build

相关问题