NervJS / taro

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

手动增加一个 babel-loader 配置来解决,还是报Uncaught ReferenceError: regeneratorRuntime is not defined #11691

Closed hky301 closed 2 years ago

hky301 commented 2 years ago

相关平台

京东小程序

小程序基础库: 京东开发者工具1.10.0 使用框架: Vue3

复现步骤

pinia 这个包使用了 async 语法,而 Taro 的 babel-loader 没有处理 .mjs 后缀的依赖,所以导致了此问题。

暂时可以手动增加一个 babel-loader 配置来解决,还是报Uncaught ReferenceError: regeneratorRuntime is not defined config/index.js

mini: { webpackChain(chain) { chain.merge({ module: { rule: { mjsScript: { test: /.mjs$/, use: { babelLoader: { loader: require.resolve('babel-loader') } } } } } }) }, postcss: { pxtransform: { enable: true, config: {

    }
  },
  url: {
    enable: true,
    config: {
      limit: 1024 // 设定转换尺寸上限
    }
  },
  cssModules: {
    enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
    config: {
      namingPattern: 'module', // 转换模式,取值为 global/module
      generateScopedName: '[name]__[local]___[hash:base64:5]'
    }
  }
}

},

期望结果

正常

实际结果

vendors.js:90 Uncaught ReferenceError: regeneratorRuntime is not defined

环境信息

👽 Taro v3.4.6

  Taro CLI 3.4.6 environment info:
    System:
      OS: Windows 10
    Binaries:
      Node: 14.19.0 - D:\Program Files\nodejs\node.EXE
      Yarn: 1.13.0 - D:\Program Files (x86)\Yarn\bin\yarn.CMD
      npm: 6.14.16 - D:\Program Files\nodejs\npm.CMD👽 Taro v3.4.6

  Taro CLI 3.4.6 environment info:
    System:
      OS: Windows 10
    Binaries:
      Node: 14.19.0 - D:\Program Files\nodejs\node.EXE
      Yarn: 1.13.0 - D:\Program Files (x86)\Yarn\bin\yarn.CMD
      npm: 6.14.16 - D:\Program Files\nodejs\npm.CMD
SyMind commented 2 years ago

看起来像是没有引入 babel-polyfill,或引入 regenerator-runtime。

hky301 commented 2 years ago

@SyMind babel-polyfill 怎么引入呢

SyMind commented 2 years ago

文档:https://babeljs.io/docs/en/babel-polyfill

按照文档通过以下方式可能是有效的,因为我没有具体尝试不能保证。

npm install regenerator-runtime

app.js 文件中引入

import "regenerator-runtime/runtime";
Chen-jj commented 2 years ago

@hky301 像我在第一个 issue 里回答你那样加上 babel-loader 就可以了,现在新建一个 vue3-pinia 项目也没有问题:

image
hky301 commented 2 years ago

@Chen-jj 编译成微信小程序没问题的,京东小程序报错的

Chen-jj commented 2 years ago

就是京东小程序

baltic-sea-origin commented 2 years ago

就是京东小程序

我这边测试Taro 3.5.2 init vue3 + pinia 在京东小程序上也是直接报错 regeneratorRuntime is not defined