Después de actualizar mis paquetes npm, algunas de las importaciones del módulo 'vue' comenzaron a mostrar errores:
TS2305: Módulo '"../../node_modules/vue/dist/vue"' no tiene miembro exportado 'X'
donde X es nextTick, onMounted, ref, watch, etc. Al servir el proyecto, Vue dice que "no se pudo compilar". WebStorm realmente reconoce las exportaciones, las sugiere y muestra los tipos, pero el error se muestra de todos modos. Algunas exportaciones como computed y defineComponent funcionan bien.
Lo que he probado:
TypeError: Object(...) is not a function en la consola y no muestra la aplicación en absoluto. En la terminal, se introducen algunas advertencias nuevas: "export 'X' (imported as '_X') was not found in 'vue' donde X es createElementBlock, createElementVNode, normalizeClass y normalizeStyle.Mi lista completa de dependencias:
"dependencies": { "@capacitor/android": "3.0.0", "@capacitor/app": "1.0.0", "@capacitor/core": "3.0.0", "@capacitor/haptics": "1.0.0", "@capacitor/keyboard": "1.0.0", "@capacitor/push-notifications": "^1.0.3", "@google-pay/button-element": "^2.5.0", "@ionic-native/core": "^5.34.0", "@ionic-native/qr-scanner": "^5.35.0", "@ionic-native/vibration": "^5.34.0", "@ionic/vue": "^5.4.0", "@ionic/vue-router": "^5.4.0", "@jt-mcc/vue3-chartjs": "^1.1.2", "chart.js": "^3.4.1", "chartjs-plugin-datalabels": "^2.0.0", "color": "^3.1.3", "cordova-plugin-background-mode": "^0.7.3", "cordova-plugin-device": "^2.0.3", "cordova-plugin-qrscanner": "^3.0.1", "core-js": "^3.6.5", "firebase": "^8.6.2", "numeral": "^2.0.6", "pug": "^3.0.2", "pug-plain-loader": "^1.1.0", "secure-ls": "^1.2.6", "uuid": "^8.3.2", "v-cupertino": "^1.2.4", "vue": "^3.2.0", "vue-chartjs": "^3.5.1", "vue-i18n": "^9.1.3", "vue-numerals": "^4.0.6", "vue-router": "^4.0.0-0", "vuex": "^4.0.1" }, "devDependencies": { "@capacitor/cli": "3.0.0", "@types/jest": "^24.0.19", "@types/uuid": "^8.3.1", "@typescript-eslint/eslint-plugin": "^2.33.0", "@typescript-eslint/parser": "^2.33.0", "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-e2e-cypress": "~4.5.0", "@vue/cli-plugin-eslint": "^4.5.13", "@vue/cli-plugin-router": "~4.5.0", "@vue/cli-plugin-typescript": "~4.5.0", "@vue/cli-plugin-unit-jest": "~4.5.0", "@vue/cli-service": "~4.5.0", "@vue/compiler-sfc": "^3.0.0-0", "@vue/eslint-config-typescript": "^5.0.2", "@vue/test-utils": "^2.0.0-0", "eslint": "^6.7.2", "eslint-plugin-vue": "^7.0.0-0", "stylus": "^0.54.7", "stylus-loader": "^3.0.2", "typescript": "~3.9.3", "vue-jest": "^5.0.0-0" }Que las exportaciones nombradas de la API de composición no estén disponibles significa que vue es Vue 2 en algún lugar que solo tiene exportación predeterminada. Dado que Vue 3 está en dependencies y tanto el archivo de bloqueo como los node_modules se actualizaron, esto significa que Vue 2 es una dependencia anidada de alguna dependencia directa.
El problema debe investigarse en el archivo de bloqueo. Muestra que @vue/cli-plugin-unit-jest@4.5.13 depende de vue-jest@3 que depende de vue@2 .
Una posible solución es actualizar @vue/cli-plugin-unit-jest a la última versión, a next . Es probable que lo mismo se aplique a otros paquetes @vue/cli-* porque tienen versiones coincidentes.
Como mencioné en los comentarios, en mi caso, el truco fue actualizar TypeScript de la versión "3.xx" a "4.3.5" (otras versiones 4.xx también deberían funcionar, pero no las he probado yo mismo) . En cuanto a por qué este es el caso, mi teoría es que alguna dependencia relacionada con vue se volvió incompatible con la versión 3.x de TypeScript después de la actualización.