当我将 Register 页面放入页面文件夹中时,如下所示:
/pages - Register.vue
然后一切正常并且页面加载,但是当我将 Register 页面放入 auth 文件夹中时,如下所示:
/pages
/auth
- Register.vue
它不起作用,这是我打开控制台时看到的错误:
dynamic-import-helper:7 Uncaught (in promise) Error: Unknown variable dynamic import: ./pages/auth/Register.vue
at dynamic-import-helper:7:96
at new Promise (<anonymous>)
at default (dynamic-import-helper:6:12)
at resolve (app.js:5:22)
at e2.h2 [as resolveComponent] (createInertiaApp.js:8:52)
at n2.setPage (router.ts:378:33)
at router.ts:323:19
有人知道为什么这不起作用吗?
这是我的 vite.config.js 代码:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';
export default defineConfig({
plugins: [
vue(),
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
],
});
这是我的 app.js 代码:
import {createApp, h} from 'vue';
import {createInertiaApp} from "@inertiajs/inertia-vue3";
createInertiaApp({
resolve: name => import(`./pages/${name}.vue`),
setup({el, app, props, plugin}) {
createApp({render: () => h(app, props)})
.use(plugin)
.mount(el)
}
});
我尝试将 ${name} 更改为仅身份验证/注册,然后它就可以工作了?但这并不是真正的解决方案。
这是我调用的方法来呈现 Register 页面:
public function register(): Response|ResponseFactory
{
return Inertia::render('auth/Register');
} Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我遇到了同样的问题,我按照 Inertia 的文档重写它来修复它。
我在
@inertiajs/react": "^1.0.2"上,我的代码如下所示:import { createRoot } from 'react-dom/client'; import { createInertiaApp } from '@inertiajs/react'; const createApp = () => createInertiaApp({ resolve: (name) => { const pages = import.meta.glob('./pages/**/*.tsx', { eager: true }); const page = pages[`./pages/${name}.tsx`]; return page; }, setup({ el, App, props }) { createRoot(el).render(<App {...props} />); }, }); export default createApp;import.meta.glob是 vite 构建的-in feature 它将预先构建在此 glob 模式中找到的所有组件并将它们存储在一个数组中。然后,您可以从该数组访问需要渲染的页面(模块),并在解析方法中返回它。希望对您有帮助!