web-infra-dev / garfish

A powerful micro front-end framework 🚚

Home Page:https://www.garfishjs.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

子应用动态挂载子app时会出现destroy 不是一个function

Emma-Alpha opened this issue · comments

commented

Describe the bug

子应用动态挂载子app时会出现destroy 不是一个function

Uncaught TypeError: destroy is not a function
at safelyCallDestroy (react-dom.development.js:22927:5)
at commitHookEffectListUnmount (react-dom.development.js:23095:11)
at commitPassiveUnmountInsideDeletedTreeOnFiber (react-dom.development.js:25096:11)
at commitPassiveUnmountEffectsInsideOfDeletedTree_begin (react-dom.development.js:25043:5)
at commitPassiveUnmountEffects_begin (react-dom.development.js:24951:11)
at commitPassiveUnmountEffects (react-dom.development.js:24936:3)
at flushPassiveEffectsImpl (react-dom.development.js:27033:3)
at flushPassiveEffects (react-dom.development.js:26979:14)
at commitRootImpl (react-dom.development.js:26930:5)
at commitRoot (react-dom.development.js:26677:5)

Reproduction

https://stackblitz.com/edit/garfish-demo-xe7dqh?file=main/src/index.js

Used Package Manager

npm

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 16.14.2 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 7.17.0 - /usr/local/bin/npm

Validations

我这边无法打开你的 ide,你可以尝试在 provider 下面添加这段代码吗

if (window.__GARFISH__ && typeof __GARFISH_EXPORTS__ !== 'undefined') {
  // eslint-disable-next-line no-undef
  __GARFISH_EXPORTS__.provider = provider;
}
commented

我这边无法打开你的ide,你可以试试在provider下面添加这段代码吗

if (window.__GARFISH__ && typeof __GARFISH_EXPORTS__ !== 'undefined') {
  // eslint-disable-next-line no-undef
  __GARFISH_EXPORTS__.provider = provider;
}

我更新了代码仓库地址了,麻烦大佬看看?

可以把你的代码 clone 到 github 仓库,给我一个仓库的地址吗,stackblitz 在多仓库时经常有 bug

commented

嗯嗯,我复制到github上,稍等

commented

可以把你的代码 clone 到 github 仓库,给我一个仓库的地址吗,stackblitz 在多仓库时经常有 bug

大佬,代码放到这个仓库里面了 https://github.com/Emma-Alpha/garfish_demo

commented

@zhoushaw 大佬,这个问题好处理吗?

@Emma-Alpha 我在本地 clone 运行了看着是正常的呢,你在本地运行过吗

commented

@zhoushaw 运行过了,要不我提供一个视频给你?

commented

@zhoushaw

2023-04-17.18.03.55.-.Compressed.with.FlexClip.mp4
commented

更换成以下写法,开发环境是没有任何报错的。
image
但是,打包后出现provider is undefind。

我来看看

image

你 useEffect 里面 async 函数这种写法本身就是有问题的吧

commented

是的,我看到了React提示出来的警告,因此我更改成了新的写法。只不过出现了新的错误。

你按照右边这种写法 有什么问题吗,我理解这不是garfish 的问题,useEffect 里面 async 你这种用法就是有问题的

是的,我看到了React提示出来的警告,因此我更改成了新的写法。只不过出现了新的错误。

什么错误呢

commented

你按照右边这种写法 有什么问题吗,我理解这不是garfish 的问题,useEffect 里面 async 你这种用法就是有问题的

这种写法是参考大佬的哦
image

commented

@zhoushaw image

出现这个错误

我们更新下 demo 哈

@zhoushaw image

出现这个错误

是打包后吗,我本地没有出现这个问题

commented

@zhoushaw image

出现这个错误

是打包后吗,我本地没有出现这个问题

是的,通过webpack编译之后就出现了

commented

是否需要我这边提供完整的webpack config?

是的,通过webpack编译之后就出现了

demo 打包后能复现吗

provider 为 null 参考下这个问题:https://www.garfishjs.org/issues/#provider-is-null . 我看了你的 webpack 配置没有问题,dev 下我这边没复现过。一般来说打包后 和 dev 表现是一样的,所以这边你看下能不能 dev 如果你能复现的话提供下复现环境。其他的除了上面说的那个问题外,我没发现其它的问题哈。

commented

我看了你的 webpack 配置没有问题,dev 下我这边没复现过。一般来说打包后 和 dev 表现是一样的,所以这边你看下能不能 dev 如果你能复现的话提供下复现环境。其他的除了上面说的那个问题外,我没发现其它的问题哈。

打包后,配置dist比较麻烦。。稍等,我看看怎么弄。

我看了你的 webpack 配置没有问题,dev 下我这边没复现过。一般来说打包后 和 dev 表现是一样的,所以这边你看下能不能 dev 如果你能复现的话提供下复现环境。其他的除了上面说的那个问题外,我没发现其它的问题哈。

打包后,配置dist比较麻烦。。稍等,我看看怎么弄。

嗯嗯好的,你复现了可以推下代码我这边拉下来看下

我这边 serve dist 下面的目录也不会复现哦

commented

嗯,我这边迁移一下线上使用的webpack config 看看先,我刚刚配置了一下本地简单的demo 确实是没有出现

建议优先检查下线上配置,目前还没有碰到过本地表现和生产环境不一致的情况。配置可以参考这里 https://www.garfishjs.org/issues/#provider-is-null

commented

感谢大佬,我找到原因了。。(线上的 node_modules 和 yarn 环境有毒,我清空缓存就OK了)