解決 Vue + Quasar 報錯:Cannot find module '#q-app/wrappers'
本文由 AI 輔助翻譯自韓文原文。 閱讀韓文原文 →
![]() |
| 啊啊啊啊啊崩潰 |
可能會出現以下這種錯誤,或是再下面那種錯誤。
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" 或者
ERROR(vue-tsc) Cannot find module '#q-app/wrappers' or its corresponding type declarations.- vue 3.4.18
- quasar 2.16.0
- quasar/app-vite 2.1.4
不知道 Quasar 是從什麼時候開始改變使用方式的,但在我目前使用的版本中,已經和以前的用法不同了。特別是搭配 Vite 使用 CLI 的情況下,一定會遇到這個問題。參考資料
import { defineConfig } from "@quasar/app-vite";如果這是以前的寫法,那現在
import { defineConfig } from '#q-app/wrappers'必須像這樣 import 才行。這時候會報錯說無法 import #q-app,如果去問 ChatGPT 或 Cursor.ai 等 AI,它們會叫你把 node_modules 全部刪掉再重新 npm install,或是試試 quasar clean --qconf,不然就是叫你用以前的方式 import。因為這是最近才變更的項目,AI 似乎還沒學習到。
根本的問題其實是 Bug 造成的。雖然已經有修補程式,但看起來比較像是臨時的解決方案,還不夠完美。
如果在 tsconfig.json 中定義了 baseUrl,就會和 Quasar 自己產生並使用的 tsconfig.json 發生衝突(Quasar 使用的是定義在 extends 鍵值中的 /.quasar/tsconfig.json)。
解決方法
刪除 tsconfig.json 中的 baseUrl 和 path 項目。
以下是建議的 tsconfig.json 檔案內容。
{
"extends": "./.quasar/tsconfig.json",
"compilerOptions": {
"esModuleInterop": true,
"skipLibCheck": true,
"target": "esnext",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"module": "preserve",
"noEmit": true,
"lib": [
"esnext",
"dom",
"dom.iterable"
]
},順帶一提,vite.config.js 裡也有類似的設定,但因為那是給 Vite 參考的 alias 路徑,所以可以忽略。只有 tsconfig 會發生衝突。
