昨晚才知道 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…嘗試找問題
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 協議》,轉載必須註明作者和本文連結