故障排除
AI生成摘要
這篇文章介紹了在使用VitePress開發過程中遇到的兩個主要問題及其解決方案。首先是VSCode無法找到已安裝的vue package,通過切換到npm解決了這個問題。其次是README.md
中出現大量TypeScript錯誤訊息,通過調整tsconfig.json
的include範圍解決了這個問題。
裝是裝好了,也能運作開發了,但還有一些小問題需要排除
找不到vue package
我打開一開始生成的檔案docs/.vitepress/theme/index.ts
後發現了這樣的訊息
Cannot find module 'vue' or its corresponding type declarations
出現在一開始import vue的那一行
import { h } from "vue"
似乎是找不到已經安裝好的vue package。但dev server和build都能正常運行,也就是說package是正常安裝的,只是VSCode偵測不到。
神奇的是如果我執行了一次pnpm run docs:build
錯誤訊息就會消失,似乎是它找到package了。但開發了一陣子後就又會突然找不到,似乎是非常不安定的狀態。
反覆測試了很多次後我懷疑是pnpm安裝package的方式與WSL & dev container的相性不好。 雖然我不能找到實際的緣由,但總之我刪光原本的packages與pnpm-lock.yaml
換回傳統的npm。問題就得到解決了。
npm install
README.md裡的海量錯誤
我希望vue的型態檢查也作用在/docs
裡面的.md
檔案,因此有了這樣的設定:
// .vscode/settings.json
{
// ...
"vue.server.hybridMode": true,
"vue.server.includeLanguages": ["vue", "markdown"],
}
// tsconfig.json
{
// ...
"include": [
"docs/**/*.md",
"docs/.vitepress/*.mts",
"docs/.vitepress/theme/*.ts",
"docs/.vitepress/theme/**/*.ts",
"docs/.vitepress/theme/**/*.vue"
],
"exclude": [
"node_modules",
"resource"
],
"vueCompilerOptions": {
"vitePressExtensions": [".md"]
}
}
但問題來了,從VSCode裡看起來README.md
裡充滿了海量的錯誤訊息,但並不是我的文件裡真的有什麼錯誤。 明明是Markdown檔案卻顯示一堆ts-plugin(2304)
這樣的錯誤。
我不希望VSCode的TypeScript檢查在README.md
裡還在作用,但我明明沒有將其放在include
裡面呀!
// tsconfig.json
// ...
"include": [
"docs/**/*.md",
"docs/.vitepress/*.mts",
"docs/.vitepress/theme/*.ts",
"docs/.vitepress/theme/**/*.ts",
"docs/.vitepress/theme/**/*.vue"
],
我做了以下的嘗試都沒有用
嘗試1: 將README.md
放進exclude
裡面
// tsconfig.json
{
// ...
"exclude": [
"README.md",
"node_modules",
"resource"
],
// ...
}
嘗試2: 指定typescript.tsdk
// .vscode/settings.json
{
// ...
"typescript.tsdk": "./node_modules/typescript/lib",
}
我想了想,不就是因為vue作用在所有.md
上,而tsconfig卻只作用在/docs/**/*.md
上所產生的矛盾嗎? 我從一開始的嘗試就相反了,既然我阻止不了vue作用的範圍,那只好改tsconfig的作用範圍了
// tsconfig.json
{
// ...
"include": [
"docs/**/*.md",
"**/*.md",
"docs/.vitepress/*.mts",
"docs/.vitepress/theme/*.ts",
"docs/.vitepress/theme/**/*.ts",
"docs/.vitepress/theme/**/*.vue"
],
// ...
}
錯誤訊息消失了!如果有更好的解法會在更新這篇文章