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

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

Closed
5 tasks done
Emma-Alpha opened this issue Apr 17, 2023 · 30 comments
Closed
5 tasks done

Comments

@Emma-Alpha
Copy link

Emma-Alpha commented Apr 17, 2023

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

@zhoushaw
Copy link
Member

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

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

@Emma-Alpha
Copy link
Author

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

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

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

@zhoushaw
Copy link
Member

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

@Emma-Alpha
Copy link
Author

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

@Emma-Alpha
Copy link
Author

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

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

@Emma-Alpha
Copy link
Author

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

@zhoushaw
Copy link
Member

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

@Emma-Alpha
Copy link
Author

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

@Emma-Alpha
Copy link
Author

@zhoushaw

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

@Emma-Alpha
Copy link
Author

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

@Emma-Alpha
Copy link
Author

@zhoushaw
image

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

我来看看

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

image

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

@Emma-Alpha
Copy link
Author

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

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

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

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

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

什么错误呢

@Emma-Alpha
Copy link
Author

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

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

@Emma-Alpha
Copy link
Author

@zhoushaw image

出现这个错误

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

我们更新下 demo 哈

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

@zhoushaw image

出现这个错误

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

@Emma-Alpha
Copy link
Author

@zhoushaw image

出现这个错误

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

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

@Emma-Alpha
Copy link
Author

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

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

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

demo 打包后能复现吗

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

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

@Emma-Alpha
Copy link
Author

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

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

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

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

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

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

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

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

@Emma-Alpha
Copy link
Author

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

@danpeen
Copy link
Collaborator

danpeen commented Apr 17, 2023

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

@Emma-Alpha
Copy link
Author

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

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

No branches or pull requests

3 participants