我在连接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'],
});
1条答案
按热度按时间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**文件中重新添加行,以忽略上述文件
VITE_PUSHER_APP_KEY
VITE_PUSHER_APP_CLUSTER
VITE_PUSHER_HOST
VITE_PUSHER_PORT
VITE_PUSHER_SCHEME
npm run build
。