umijs / umi-ui

Umi UI for umi 3
419 stars 73 forks source link

umi@3 下路由路径问题 #213

Closed qiujie8092916 closed 10 months ago

qiujie8092916 commented 10 months ago

What happens?

在路由配置里:

[{
    // ...
    component: '@@/plugin-AA/layout',
    // ...
}]

最终会被转成 /Users/xxx/Documents/project/xxx/src/pages//Users/xxx/Documents/project/xxx/src/.umi/plugin-AA/layout

  1. 会先被core/lib/Route/Route.js转成/Users/xxx/Documents/project/xxx/src/pages/@@/plugin-AA/layout
    if (
      route.component &&
      !opts.isConventional &&
      typeof route.component === 'string' &&
      !route.component.startsWith('@/') &&
      !path.isAbsolute(route.component)
    ) {
      route.component = winPath(join(opts.root, route.component));
    }
  2. 再被plugin-ui-blocks/lib/ui/utils.js转成/Users/xxx/Documents/project/xxx/src/pages//Users/xxx/Documents/project/xxx/src/.umi/plugin-AA/layout
    const routeComponent = route.component
          ?.replace('@@', paths.absTmpPath)
          ?.replace('@', paths.absSrcPath);
        const component = isAbsolute(routeComponent)
          ? require.resolve(routeComponent)
          : require.resolve(join(cwd, routeComponent));

Expected behavior 希望可以在路由的 component支持引用临时文件夹@@下的路径 正确返回/Users/xxx/Documents/project/xxx/src/.umi/plugin-AA/layout

Context