Skip to content

Conversation

@xiefengnian
Copy link
Contributor

使用 import 代替 require 语句


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 里,一旦插件自己引的包跟应用引的版本不一致,都会出现这种问题

@afc163
Copy link
Contributor

afc163 commented Dec 1, 2021

图片

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants