--- tags: Vue 直播班 - 2021 夏季班 --- # 6/30 線上 Slack 助教 ## 今日助教輪班時間 暄雯:6/30 (三) 回覆時間:上午 9:00 - 下午 1:00 ## 發問規範 老師助教同學們好,**這是我的 Codepen**,我**原本預期**「JS 第 8 行會出現數字 8」,**但卻出現**「預期外的結果是 0」,想問下問題出在哪裡? ## 注意 1. 請各位先到 Slack 上將問題放在助教服務內的 thread,如圖 ![](https://i.imgur.com/nHE3sOx.png) 2. 遵循以上的發問規範以便助教查看問題,不可直接貼上網址而沒有說明文字或者只提供截圖 3. 助教會依照 Slack 上的順序回覆問題 4. 以下問題區塊只能由助教自行增加 5. 助教會將回覆寫在下方問題區塊 ## 問題 1. **Vic**: 助教好: 請問要如何刪掉沒有 ID 的訂單,且使用付款 API 時,有回傳成功,但相對的訂單卻沒有改變付款狀態,後來有一張訂單資料成功改變狀態,但出現了沒有 ID 的訂單。附上[訂單頁程式碼](https://github.com/Hsuan777/VFitness/blob/develop/src/views/frontend/Order.vue)(178 行),再請助教幫忙看看,謝謝。(付款後訂單未改變已解決,多了一個 } ) > 助教回覆: > 這邊我們可以協助刪除錯誤的訂單,如果需要刪除,可以私訊 葉子 或是 Ray 助教,提供 mail 和 path,說明要刪除有錯誤新增的訂單就可以哩 :D --- 2. **kaiaChun**: 助教好,昨天有詢問 Github Pages 的問題,這是我的 Github,有在 index.js 加上箭頭函式,但輸入 https://kaiachun.github.io/PetPal/index#/ 還是無法顯示頁面 > 助教回覆: > 這邊建議同學可以嘗試建立一個 gh-pages 的分支,將檔案部屬到上面。這邊提供教學給你參考:[Vue Cli 部署到 Github Pages](https://tzuhui.github.io/2020/03/02/Vue/Vue-CLI3-to-github-pages/) --- 3. **DioDeng**: 助教妳好~可以教我如何部署 Github 嗎? 有參考了許多方式,但部署出來的結構都跟同學長的不太一樣 有把 gitingnore 裡面的 dist 移掉 但部署上去依然沒看見該資料夾 > 助教回覆: > 如果同學的網址沒有包含 dist/,那沒有 dist 資料夾是沒有問題的哦 > 不太確定同學部屬的方法及結果如何,建議可以提供 Github 連結讓我們檢視,以及希望呈現的結構範例,這樣我們比較好知道問題出在哪裡~ > 這邊也提供不同的教學資源給同學參考: > [Github Pages - 免費網頁空間隨你開](https://youtu.be/njlABvVRB68?t=2716) > [Vue Cli 部署到 Github Pages](https://tzuhui.github.io/2020/03/02/Vue/Vue-CLI3-to-github-pages/) > [一個指令快速部署 Vue Cli 到 GitHub Pages](https://hsiangfeng.github.io/vue/20200214/1055437216/) --- 4. **John G**: 助教好: 請問一下我再 npm run serve 的時候 發生了問題 ,請問是我的 main.scss 載入路徑錯誤嗎? https://github.com/johnchan822/taiwantravel- > 助教回覆: > 對哦,路徑載入錯誤了,[這一行](https://github.com/johnchan822/taiwantravel-/blob/master/src/App.vue#L6) 改為 @import './assets/stylesheets/main.scss'; 就可以了~ > 因為 App.vue 和 assets 資料夾是同一個階層,所以不能用 ../ 路徑 --- 5. **Iven**: 助教好: 這是我的 [程式碼](https://github.com/Iven10252158/final_project),想請問助教,在我的產品列表的地方有一個搜尋的功能,目前的情況是,我可以依據左邊的選單,找到對應的資料,但是我希望做的功能是,假設當我在新手登山的類別裡,搜尋玉山,而玉山的類別是在中階登山裡,我希望當我跨類別搜尋到東西時,旁邊的選單高亮會消失,想請助教給我一點方向讓我做出這個效果,也想請助教幫我檢查一下程式碼,在 products.vue 的檔案裡面,有一個 searchProduct 的方法,想請助教幫我檢查一下這部分的程式碼有沒有需要修改的地方,謝謝助教。 > 助教回覆: > 選單高亮的部分,因為是綁定 productValue 的值,可以嘗試在搜尋時修改 productValue 的值就可以了 > 程式碼的部分,else if 這段看起來是可以不用寫的~ --- 6. **Wel**: 助教你好: 想請問助教第七週範例,他的 Nav 點擊產品時會出現這個白字的樣式,想請問樣式是怎麼出來的呢? > 助教回覆: > 這邊是 Bootstrap 的 JS 語法,點擊產品或其他選單項目時就會被套用 .active 樣式 --- 7. **小妤**: 老師您好,這是我的 [code](https://github.com/peggyted0129/vue3_hex_0625/blob/master/src/views/front/OrderBuying.vue)。在 src/views/front/OrderBuying.vue 頁面 (46 行) 表單驗證部分使用了 schema 寫法, 其中 "手機" 錯誤驗證訊息套用了 (191 行) isPhone 方法沒有效果,應該是(125 行)寫法有錯.....,看了官網還是不知道如何修正,請老師解答?? > 助教回覆: > 文檔裡面有提到哦,在 [這裡](https://vee-validate.logaretm.com/v4/guide/global-validators#vee-validaterules) 有提到可以設定 defineRule 來定義驗證規則 > 將 defineRule 載入後,在 created () 設定 defineRule('isPhone', this.isPhone) 就可以了~ > 建議同學在使用外部套件遇到問題時,可以先仔細翻一下文檔,很多解決方法裡面都會有提到哩,如果是看不太懂的地方可以說明是哪一段比較不清楚它的用法,這樣我們也比較容易縮小問題的範圍~ --- 8. **DioDeng**: https://github.com/ZweigDen/jimnyschool 助教你給的部署方法 3 個都嘗試過了 我不清楚部署成功的資料結構是如何? 1. 一鍵部署 - 單純 dist,沒有 src 等資料夾讓助教老師檢視作業,開啟頁面也沒有畫面(控制台有沒看到錯誤訊息) 2. Ray 助教的舊部署,可以看到 src 等資料夾,但就是沒有 dist(網頁一樣是空白) 3. 使用 github desktop 程式部署,部署上傳有出現 dist 資料夾,但嘗試開啟頁面 也是空白 這三個方法都有補上 vue.config.js 了 我成功部署了,但目前卡在這個畫面,看了影片教學是說路徑問題,但 vue3 版本不知道該去哪邊修改 > 助教回覆: > 如果是路徑問題,Vue3 版本的路徑設定會放在 vue.config.js 這個檔案裡。可以參考這篇說明:[配置参考](https://cli.vuejs.org/zh/config/#%E5%85%A8%E5%B1%80-cli-%E9%85%8D%E7%BD%AE) 影片中提到的 assetsPublicPath 對應的是此檔案中的 publicPath 屬性 如果修改後還是有問題,建議同學也可以附上 Github pages 的連結給我們檢視,謝謝~ 補充: router/index.js 的 component 寫法有誤,要改成箭頭函式 例如:第 7 行要修改為 component: () => import('../views/Home.vue'), --- 9. **leo naruhodou**: 助教好,想發問釐清一些觀念 以下兩個第七周的範例程式碼頁面 [OrderModal.vue](https://github.com/hexschool/live-vue3-dashboard/blob/main/src/components/OrderModal.vue) 以及 [DelModal.vue](https://github.com/hexschool/live-vue3-dashboard/blob/main/src/components/DelModal.vue) 在 OrderModal.vue 的第 160 行中 有加入 emits: ['update-product'] 但在 DelModal.vue 當中 卻沒有加入 emits:[] 這邊要怎麼判斷什麼時候應該加入呢:流汗: 總覺得有些地方有,有些地方沒有,頭好混亂 > 助教回覆: > 基本上如果有使用 emit 就要加上 emits:[] 哦,範例的 DelModal.vue 有補上 emits:[] 了~ --- 10. **Iven**: 助教好: 我的 vue cli 今天關掉再重啟都會出現這個錯誤,雖然說照他的步驟,npm rebuild node-sass 就可以正常運作,但是每次關掉重啟都會這樣,想問一下助教為什麼會這樣? > 助教回覆: > 建議同學可以試著把 node-sass 解除安裝後再重新安裝看看: npm uninstall node-sass npm install node-sass npm rebuild node-sass 如果還是有相同的狀況,再麻煩同學附上 Github 的連結,方便我們檢視問題哩,感謝~ > >(同學事後回報有可能是 node_modules 更新問題,重新下載 / 更新 node_modules 資料夾後就沒有再出現稍早的錯誤了) --- 11. **leo naruhodou**: 助教好, 想請問關於 vue cli 產生的網站的 OGP 的問題 以下是 3 個主流 SNS 的測試模式 facebook https://developers.facebook.com/tools/debug/ twitter https://cards-dev.twitter.com/validator line https://poker.line.naver.jp/ 現階段我已經將 OGP 寫死在 public>index.html 的 meta 上 並在頁面上確認到(可參考附圖) https://overactive1988.github.io/HexSchool_vue_lesson2021/week08/ogp.jpg [頁面網址](https://overactive1988.github.io/HexSchool_vue_lesson2021/week08/#/) 目前只確認到 FB 可以正常顯示 OGP 以及設定的內容(附圖 2) 而 twitter 與 line 都會跳出錯誤(可參照上面提供的檢測工具) LINE 回報的錯誤是 ```we're sorry but doesn't work properly without javascript enabled. please enable it to continue``` TWITTER 回報的錯誤是 ``` The card for your website will look a little something like this! Unable to render Card preview INFO: Page fetched successfully INFO: 8 metatags were found ERROR: No card found (Card error) ``` 這邊想請問在 Vue Cli 的環境中 要如何才能像一般網站那樣,設定了 OGP 也能正常顯示呢? > 助教回覆: > 目前測試 twitter 顯示沒有問題,同學可以再嘗試看看 Line 的部分,同學可以試著在 main.js 補上這段程式碼: ```htmlembedded= new Vue({ router, store, render: h => h(App) }).$mount('#app'); ``` --- 12. **蔡皓全**: 助教好, 1. 我想請問為甚麼我在 login 介面登入成功進到後台後,又會跳回 login 介面,要再登入第 2 次後才會正常不會跳回 login 介面。 2. 在我後台的 Sidebar 有 Product 跟 Coupon 兩個選單是用來切換兩個元件的,如果我想在切換到甚麼元件就讓那個選單加上有 active 的效果可以用甚麼方法寫呢。 [Github](https://github.com/DavidTsai-whole/vuecli3) 謝謝 > 助教回覆: > 1. 登入介面有使用 form 標籤,建議改為在 form 標籤設定 @submit.prevent="goToAdmin" > 2. 可以在 data 設定一個物件,例如:pageName,active 樣式則根據 pageName 的值來決定 --- 13. **leo naruhodou**: 助教好,關於 OGP 在 Line 上顯示的問題,還是沒辦法得到解答 qq 這裡是 [我的專案的 main.js](https://github.com/overactive1988/vue_lesson8_homework/blob/master/src/main.js) 如果想加上助教提到的程式碼 ```htmlembedded= new Vue({ router, store, render: h => h(App) }).$mount('#app'); ``` 具體應該如何整合才會是正確的呢...? > 助教回覆: > 這邊修改了一下程式碼,在 main.js 最後加上這段就可以了: ```htmlembedded= new App({ render: h => h(App) }).$mount('#app') ``` --- (這邊只能由助教編輯,問題請到 thread 上詢問)