Taro init 初始的项目编译失败Vue3 + NutUI 解决方案

昨晚才知道 Taro 框架,它能达到和 uni-app 一样的“一套”跑所有平台小程序,这么方便,理所当然要试试.

按照它的官方文档快速开始, 过程中还发现了一个好用的npm包,那就是 mirror-config-china, 有了它,就不用手动设置镜像了,安装如下:

npm  install -g mirror-config-china

经过一系列的操作, Taro 已经安装好了,通过它的 init 初始项目,选择了 Vue3 + NutUI,然而它的初始代码项目居然编译不过,它会报:

Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /Users/gavin/Public/oneApp/src/pages/index/index.vue: Unexpected token, expected "," (17:29)

  15 |     });
  16 |
> 17 |     const handleClick = (type: string, msg: string, cover: boolean = false) => {
     |                              ^
  18 |       state.show = true;
  19 |       state.msg2 = msg;
  20 |       state.type = type;

熟悉 TS 语法的人知道这是语法没有得到正确的解析报错了,需要把abel.config.js 里的 ts:false,改成 true,因为 NutUI 是 TS语法…不打开编译不过.
就算你在 使用 Taro 初始项目的时候,没有选择使用 TS,这里也要改成 true:

  presets: [
    ['taro', {
      framework: 'vue3',
      ts: true
    }],
  ],

本以为这样就可以,但没想到又报:


监听文件修改中...

⚠️  Compiled with warnings.

./src/app.js 9:8-14
" '@nutui/nutui-taro' does not contain an export named 'Button'.

./src/app.js 9:20-25
" '@nutui/nutui-taro' does not contain an export named 'Toast'.

突然不想使用这个框架了,demo都这么多问题…
那要用 uni-app 吗?
想了下,于是继续研究是什么问题.
这是时候,我忍不住加了文档贴出来的微信群,希望有来之被坑之人的帮助.
于是我加群了、提问了、截图了、删了 node_models 又安装,连续使用 Taro init 初始项目 oneAPP、twoAPP…尝试找问题
Taro init 初始的项目编译失败Vue3 + NutUI 解决方案

Taro init 初始的项目编译失败Vue3 + NutUI 解决方案

Taro init 初始的项目编译失败Vue3 + NutUI 解决方案

bigbugMBP Public % ls -l
total 0
drwxr-xr-x  14 gavin  staff  448 Oct 11 23:48 oneApp
drwxr-xr-x  15 gavin  staff  480 Oct 11 01:05 threeApp
drwxr-xr-x  16 gavin  staff  512 Oct 11 00:56 twoApp
...

群友们没遇到这个问题或是其它,没人能给出正确答案,我也被这个问题困扰着去写 PHP代码了.
下班回家,群里还是没有回复我,今天就属我是群里最活跃的人.
大脑系统经过一天的运行,想出来一些思路:要不看看 NutUI 文档.
快速浏览指引文档,证实:

Taro 的 Cli 初始的项目(Vue3 + Nutui ) 代码本身就不完整 (现在是2021-10-11).

修复方案是:
使用 taro 选 Vue3 + NutUI,还需要自己下载:

yarm add babel-plugin-import --dev

然后在babel.config.js 加上:

 plugins: [
    [
      "import",
      {
        "libraryName": "@nutui/nutui-taro",
        "libraryDirectory": "dist/packages/_es",
        "camel2DashComponentName": false
      },
      'nutui3-taro'
    ]
  ]

完整的 babel.config.js :

// babel-preset-taro 更多选项和默认值:
// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md
module.exports = {
  presets: [
    ['taro', {
      framework: 'vue3',
      ts: true
    }],
  ],
  plugins: [
    [
      "import",
      {
        "libraryName": "@nutui/nutui-taro",
        "libraryDirectory": "dist/packages/_es",
        "camel2DashComponentName": false
      },
      'nutui3-taro'
    ]
  ]
}

总结

这是我用的最糟心的一次开源软件, CLI 生成的初始项目代码, 一堆bug, 连一个基本的demo都跑不了、编译不过…只能说自己不要做这样的事咯~ 好了,晚安.

本作品采用《CC 协议》,转载必须注明作者和本文链接
Less is more.
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!