You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel+AngularJS迁移Vite后blade.php路由组件失效求助

Laravel + AngularJS 迁 Vite 后 Blade 组件路由失效的解决办法

问题根源

Vite 和 Webpack 的加载逻辑不一样:Webpack 打包完会把资源全局暴露,Vite 默认是 ESM 按需加载,不会把 AngularJS 模块扔到全局,所以 Blade 里的路由找不到对应的组件。

具体修复步骤

1. 把 AngularJS 模块挂到全局

在你的 Vite 入口文件(比如 resources/js/app.js)里,手动把模块挂载到 window 对象:

import angular from 'angular';
import ngRoute from 'angular-route';

// 定义你的 AngularJS 模块
const yourApp = angular.module('yourApp', [ngRoute]);

// 必须挂到全局,Blade 才能访问到
window.angular = angular;
window.yourApp = yourApp;

2. 修正 Blade 里的路由代码

Blade 里写的 AngularJS 路由配置,要直接用全局注册的 yourApp 模块,别用局部变量:

<script>
yourApp.config(function($routeProvider) {
    $routeProvider
        .when('/user/profile', {
            templateUrl: '/resources/views/components/user-profile.blade.php',
            controller: 'UserProfileController'
        });
});
</script>

3. Vite 配置里声明全局依赖

在 vite.config.js 中添加 Rollup 配置,告诉 Vite 把 AngularJS 相关依赖打包成全局可用的:

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
    build: {
        rollupOptions: {
            output: {
                globals: {
                    angular: 'angular',
                    'angular-route': 'angularRoute'
                }
            }
        }
    }
});

4. 控制器/指令必须全局注册

所有 AngularJS 的控制器、指令都要注册到全局的 yourApp 模块上,不能只在局部定义:

// 错误示例:只在局部定义,Blade 访问不到
// const UserProfileController = function($scope) { /* ... */ };

// 正确示例:注册到全局模块
yourApp.controller('UserProfileController', function($scope) {
    // 控制器逻辑写这
});

5. 开发环境刷新配置

如果是开发阶段,要让 Vite 监听 Blade 文件的变化,修改 vite.config.js 的 refresh 配置:

laravel({
    input: ['resources/css/app.css', 'resources/js/app.js'],
    refresh: ['resources/views/**/*.blade.php'],
}),

验证方法

  1. 跑 npm run dev 启动 Vite
  2. 访问目标路由,打开浏览器控制台看有没有“模块未找到”的报错
  3. 确认 Blade 里的 AngularJS 代码能正常调用 yourApp 模块

内容的提问来源于stack exchange,提问作者Huu_Tu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:32:37