我有一个 laravel (inertia/vue) 应用程序(直到最近才使用 laravel-mix),其中包含我使用 pwa 构建器和工作箱构建的 pwa 功能。
随着laravel框架从laravel-mix改为vite,我迁移到vite,它的功能按预期工作,js和css被注入到应用程序入口页面的head元素中,vue页面按预期工作,在开发过程中,不会编译任何内容并将其注入到公共文件夹中,就像 laravel-mix/webpack 的情况一样。
我现在无法像以前一样让 PWA 功能正常工作。由于我不再使用 webpack/laravel-mix,我用这个插件替换了我正在使用的 webpack-workbox 插件:vite-plugin-pwa。
当我使用 laravel-mix 和 webpack-workbox 插件时,我只需指向 webpack 配置文件中的源 Service Worker 文件,并使用我想要的 Workbox 策略来构建最终的 Service Worker 文件,然后将其编译并放置在我的公共目录中文件夹以及其他已编译的 css 和 js 文件。
使用此 vite 插件,我的最终服务工作人员不会被编译并放置在公共目录中,因此应用程序无法发现服务工作人员。我收到 404 错误,并显示以下消息:“无法为范围注册服务工作线程...”,因为没有可用的服务工作线程文件。
我怀疑我没有以正确的方式配置或使用此插件,并且希望获得有关如何执行此操作或以其他方式解决此问题的帮助。
这是我的 vite.config.js 文件:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';
import { VitePWA } from 'vite-plugin-pwa'
export default defineConfig({
plugins: [
laravel({
input: 'resources/js/app.js',
}),
vue({
template: { …Run Code Online (Sandbox Code Playgroud) 在这里问同样的问题后我仍然遇到这个问题:从身份验证端点返回的 JSON 无效,但状态代码为 200,没有响应。我查看了类似的问题并遵循了建议:将广播驱动程序设置为“pusher”,在 app.config 文件中取消注释“App/BroadcastServiceProvider”类,在 .env 文件中将调试模式设置为 false 等。我有还查看了 Pusher 文档,但问题对我来说仍未解决。
我已经通过添加“/broadcasting/auth/”身份验证端点和标头更新了之前的尝试,但仍然出现相同的错误。但我现在可以看到 302 重定向到身份验证路由,然后 302 重定向到登录路由,然后到仪表板,在 Laravel Telescope 上有 200 响应,这是我以前没有看到的。因此,这对我来说添加身份验证端点应该可以解决问题,但事实并非如此。
我还尝试设置和使用“/ Pusher / auth /”身份验证端点路由和控制器,但它给了我“无法加载资源:服务器响应状态为405(不允许方法)”以及“错误” :无法从 auth 端点检索 auth 字符串 - 从 /pusher/auth 收到状态:405,但不是之前的无效 json 错误。我通过向控制器发送“get”请求得到此信息,但收到带有“的 500 内部服务器错误” post'请求。我真的不知道哪个是正确的。
这是我的 bootstrap.js 文件:
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
// Enable pusher logging - don't include this in production
Pusher.logToConsole = true;
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
forceTLS: true,
authEndpoint: '/broadcasting/auth', …Run Code Online (Sandbox Code Playgroud)