NervJS / taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
https://docs.taro.zone/
Other
35.34k stars 4.77k forks source link

支付宝小程序编译报错regeneratorRuntime Function is not funtion #12562

Closed daivdggdev closed 1 year ago

daivdggdev commented 1 year ago

相关平台

支付宝小程序

小程序基础库: 2.7.19 使用框架: React

复现步骤

taro集成dva后,在h5和微信小程序平台都是正常运行的,编译到支付宝小程序,报错信息如下:

Xnip2022-09-23_15-49-55

我根据这边文章指引regeneratorRuntime 相关报错排查指引, 安装@babel/plugin-transform-runtime未解决问题,也参考了issues9450,没有解决问题

期望结果

编译运行正常

实际结果

运行报错

环境信息

$ taro info
👽 Taro v3.5.5

  Taro CLI 3.5.5 environment info:
    System:
      OS: macOS 12.1
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 14.17.0 - ~/.nvm/versions/node/v14.17.0/bin/node
      Yarn: 1.22.19 - ~/.yarn/bin/yarn
      npm: 8.1.3 - ~/.nvm/versions/node/v14.17.0/bin/npm
    npmPackages:
      @tarojs/cli: 3.5.5 => 3.5.5
      @tarojs/components: 3.5.5 => 3.5.5
      @tarojs/helper: 3.5.5 => 3.5.5
      @tarojs/mini-runner: 3.5.5 => 3.5.5
      @tarojs/plugin-framework-react: 3.5.5 => 3.5.5
      @tarojs/plugin-platform-alipay: 3.5.5 => 3.5.5
      @tarojs/plugin-platform-jd: 3.5.5 => 3.5.5
      @tarojs/plugin-platform-qq: 3.5.5 => 3.5.5
      @tarojs/plugin-platform-swan: 3.5.5 => 3.5.5
      @tarojs/plugin-platform-tt: 3.5.5 => 3.5.5
      @tarojs/plugin-platform-weapp: 3.5.5 => 3.5.5
      @tarojs/react: 3.5.5 => 3.5.5
      @tarojs/router: 3.5.5 => 3.5.5
      @tarojs/runtime: 3.5.5 => 3.5.5
      @tarojs/shared: 3.5.5 => 3.5.5
      @tarojs/taro: 3.5.5 => 3.5.5
      @tarojs/taro-h5: 3.5.5 => 3.5.5
      @tarojs/webpack-runner: 3.5.5 => 3.5.5
      babel-preset-taro: 3.5.5 => 3.5.5
      eslint-config-taro: 3.5.5 => 3.5.5
      react: ^18.0.0 => 18.2.0
      taro-ui: ^3.0.0-alpha.10 => 3.0.0-alpha.10
Chen-jj commented 1 year ago

@daivdggdev 检查一下你的依赖拓扑,使用到的 regenerator-runtime 的版本是多少,高于 0.11 版本的话它内部实现使用了 Function() 构造函数,这在小程序环境里是不被支持的。

shanzheng1991 commented 1 year ago

regenerator-runtime 那怎么解决呢?降低regenerator-runtime的版本?

yoyo837 commented 1 year ago

你先试试看降级是否能解决呢?

shanzheng1991 commented 1 year ago

regenerator-runtime 降到了0.10.5的版本还是不可以。

liuguangyong93 commented 1 year ago

@daivdggdev 检查一下你的依赖拓扑,使用到的 regenerator-runtime 的版本是多少,高于 0.11 版本的话它内部实现使用了 Function() 构造函数,这在小程序环境里是不被支持的。

如果是@babel/runtime中的自主引入的化,该怎么办?降低babel版本?

image

shanzheng1991 commented 1 year ago

可以研究一下 yarn 文档里面的 resolutions。有说到怎么降低依赖的依赖的版本号的。但我试了不行哦。

liuguangyong93 commented 1 year ago

@daivdggdev 检查一下你的依赖拓扑,使用到的 regenerator-runtime 的版本是多少,高于 0.11 版本的话它内部实现使用了 Function() 构造函数,这在小程序环境里是不被支持的。

如果是@babel/runtime中的自主引入的化,该怎么办?降低babel版本?

image

解决了,锁死@babel/runtime和@babel/core版本就行,比如^7.8.0 => 7.8.0,目前最新babel版本是7.20.0,从7.19.0就有这个问题了。所以只需要降低babel即可解决~~

liuguangyong93 commented 1 year ago

可以研究一下 yarn 文档里面的 resolutions。有说到怎么降低依赖的依赖的版本号的。但我试了不行哦。

上边的解决方案,应该可以解决

shanzheng1991 commented 1 year ago

兄弟,锁死@babel/runtime和@babel/core版本就行,比如^7.8.0 => 7.8.0,就可以解决了吗?

shanzheng1991 commented 1 year ago

可以研究一下 yarn 文档里面的 resolutions。有说到怎么降低依赖的依赖的版本号的。但我试了不行哦。

上边的解决方案,应该可以解决

兄弟,锁死@babel/runtime和@babel/core版本就行,比如^7.8.0 => 7.8.0,就可以解决了吗?你试过了吗?我试了一下,会有新的问题。

liuguangyong93 commented 1 year ago

可以研究一下 yarn 文档里面的 resolutions。有说到怎么降低依赖的依赖的版本号的。但我试了不行哦。

上边的解决方案,应该可以解决

兄弟,锁死@babel/runtime和@babel/core版本就行,比如^7.8.0 => 7.8.0,就可以解决了吗?你试过了吗?我试了一下,会有新的问题。

有什么问题?目前运行起来没啥问题。如果是因为babel的问题,你可以把版本升高一点,比如7,18.0