Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wip] feat: qiankun runtime support mfsu #665

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/plugin-qiankun/src/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/

import { ReactComponentElement } from 'react';
import pathToRegexp from 'path-to-regexp';

export const defaultMountContainerId = 'root-subapp';

Expand All @@ -27,7 +28,6 @@ function testPathWithStaticPrefix(pathPrefix: string, realPath: string) {

function testPathWithDynamicRoute(dynamicRoute: string, realPath: string) {
// FIXME 这个是旧的使用方式才会调到的 api,先临时这么苟一下消除报错,引导用户去迁移吧
const pathToRegexp = require('path-to-regexp');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

想起来了,之前这么搞是有原因的,看下上面一行的注释😂

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

和 import 还是 require 应该没关系吧

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import 因为是静态的,不管用没用都会引入这个包的代码,这个在一些场景下会抛警告

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

那...用户什么时候能迁移完呢

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import 因为是静态的,不管用没用都会引入这个包的代码,这个在一些场景下会抛警告

可以给个场景吗😮

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

应用自己在包里引用了 path-to-regexp v6 版本,但是插件依赖的是 v1,导致 api 调用失败。
插件不会引自己声明的包的原因是,common.ts 再编译时被移到 .umi 里了,所以找到的是应用自己声明的包。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

v6 版本的 path-to-regexp 没有 default export,所以会触发一个 warning

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感觉得换成绝对路径才行。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

绝对路径也不好搞,因为当应用没有自己引 path-to-regexp 时,插件引入的就会被 hoist 到根 node_modules 里,而不是插件自己的 node_modules 下。

最好的方式是把这段逻辑下线。
不过 mfsu 的场景下因为要把插件的 runtime 代码都挪到 .umi 里,一旦插件自己引的包跟应用引的版本不一致,都会出现这种问题

return pathToRegexp(dynamicRoute, { strict: true, end: false }).test(
realPath,
);
Expand Down