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

如何基于ant-design-pro使用umi-plugin-qiankun? #3438

Closed
zhilianbi520 opened this issue Oct 14, 2019 · 11 comments · Fixed by umijs/umi-plugin-qiankun#40
Closed

如何基于ant-design-pro使用umi-plugin-qiankun? #3438

zhilianbi520 opened this issue Oct 14, 2019 · 11 comments · Fixed by umijs/umi-plugin-qiankun#40

Comments

@zhilianbi520
Copy link

想在ant-design-pro中使用umi-plugin-qiankun,实现微服务构建,请问如何做相关的配置,能否提供相关demo给予帮助。

@label-actions
Copy link

label-actions bot commented Oct 14, 2019

@kuitos 请看下。

@DLCnow
Copy link

DLCnow commented Oct 15, 2019

有相同的诉求,我现在使用的是ant-design-pro+ts的解决方案,按照demo实现了两天未果,目前有几个问题:

  1. 加入插件后yarn start会提示"Conflict: Multiple assets emit different content to the same filename umi.js.map",子项目跑不起来,script标签引用了错误的path"http://localhost:undefined/umi.js"。
    image
    需要手动更改config.js的文件,当监听到config.js变化后会重新build,之后子项目就会正常显示了.
  2. 在第一步成功的情况下子项目会正常显示,跑qiankun项目下的example,将本地子项目添加进去会提示"Application 'k2assets' died in status LOADING_SOURCE_CODE: You need to export the functional lifecycles in k2assets entry",此时src 下的 app.js 已经正常修改并添加了文档中描述的export方法.

node 12.6.0
umi 2.10.2
antd 3.20.0
@ant-design/pro-layout 4.5.9
@ant-design/pro-cli 1.0.0

@zhilianbi520
Copy link
Author

有相同的诉求,我现在使用的是ant-design-pro+ts的解决方案,按照demo实现了两天未果,目前有几个问题:

  1. 加入插件后yarn start会提示"Conflict: Multiple assets emit different content to the same filename umi.js.map",子项目跑不起来,script标签引用了错误的path"http://localhost:undefined/umi.js"。
    image
    需要手动更改config.js的文件,当监听到config.js变化后会重新build,之后子项目就会正常显示了.
  2. 在第一步成功的情况下子项目会正常显示,跑qiankun项目下的example,将本地子项目添加进去会提示"Application 'k2assets' died in status LOADING_SOURCE_CODE: You need to export the functional lifecycles in k2assets entry",此时src 下的 app.js 已经正常修改并添加了文档中描述的export方法.

楼上你用的是v2的pro嘛?还是?

@DLCnow
Copy link

DLCnow commented Oct 18, 2019

有相同的诉求,我现在使用的是ant-design-pro+ts的解决方案,按照demo实现了两天未果,目前有几个问题:

  1. 加入插件后yarn start会提示"Conflict: Multiple assets emit different content to the same filename umi.js.map",子项目跑不起来,script标签引用了错误的path"http://localhost:undefined/umi.js"。
    image
    需要手动更改config.js的文件,当监听到config.js变化后会重新build,之后子项目就会正常显示了.
  2. 在第一步成功的情况下子项目会正常显示,跑qiankun项目下的example,将本地子项目添加进去会提示"Application 'k2assets' died in status LOADING_SOURCE_CODE: You need to export the functional lifecycles in k2assets entry",此时src 下的 app.js 已经正常修改并添加了文档中描述的export方法.

楼上你用的是v2的pro嘛?还是?

版本我在上面加上了

@atzcl
Copy link
Contributor

atzcl commented Nov 1, 2019

同有

Conflict: Multiple assets emit different content to the same filename umi.js.map

的警告

@phobal
Copy link

phobal commented Nov 8, 2019

@kuitos 升级到 v1.3.2 还是有这样的问题

image

@phobal
Copy link

phobal commented Nov 8, 2019

@DLCnow

加入插件后yarn start会提示"Conflict: Multiple assets emit different content to the same filename umi.js.map",子项目跑不起来,script标签引用了错误的path"http://localhost:undefined/umi.js"。

这个是因为你没指定 port, 你可以在项目的根目录下创建一个 .env 的文件,在里面加入 PORT 的配置,比如:

PORT=8000
 

@huyansheng3
Copy link

http://localhost:undefined/umi.js 引入的umi.js的地址有undefined的错误感觉需要修复下。不能让在.env中指定PORT才行。。

umi/packages/af-webpack/src/fork.js

child.on('message', data => {
    const type = (data && data.type) || null;
    if (type === RESTART) {
      child.kill();
      start(scriptPath);
    } else if (type === 'UPDATE_PORT') {
      // set current used port
      CURRENT_PORT = data.port;
    }
    if (onMessage) {
      onMessage(data);
    }
    send(data);
  });

CURRENT_PORT = data.port; 这里再增加一行

if(!process.env.PORT) {
    process.env.PORT = data.port  
}

感觉这样应该就可以了吧?插件的逻辑都是跑在子进程里的。即使通知了父进程,插件里也取不到 process.env.PORT

@kuitos
Copy link
Member

kuitos commented Nov 11, 2019

http://localhost:undefined/umi.js 引入的umi.js的地址有undefined的错误感觉需要修复下。不能让在.env中指定PORT才行。。

umi/packages/af-webpack/src/fork.js

child.on('message', data => {
    const type = (data && data.type) || null;
    if (type === RESTART) {
      child.kill();
      start(scriptPath);
    } else if (type === 'UPDATE_PORT') {
      // set current used port
      CURRENT_PORT = data.port;
    }
    if (onMessage) {
      onMessage(data);
    }
    send(data);
  });

CURRENT_PORT = data.port; 这里再增加一行

if(!process.env.PORT) {
    process.env.PORT = data.port  
}

感觉这样应该就可以了吧?插件的逻辑都是跑在子进程里的。即使通知了父进程,插件里也取不到 process.env.PORT

cc @sorrycc 看下这个解决方案是否合理?

@hqqxxf
Copy link

hqqxxf commented Dec 28, 2019

所以,最后解决了吗?

@zhanghouji
Copy link

image
从 antd-pro 切换的别的子应用或主应用样式报错,页面不加载。

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

Successfully merging a pull request may close this issue.

9 participants