Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

213
Views
v-model arroja ReferenceError solo en producción

Tengo la siguiente vista en Vue:

 <script setup> import Overwrite from "../components/Overwrite.vue"; </script> <template> <div> ... <textarea v-model="text" cols="99" rows="20"></textarea> ... </div> </template> <script> export default { data() { return { text: "" }; }, components: { Overwrite: Overwrite }, }; </script>

Todo funciona perfectamente bien cuando inicio la aplicación con npm run dev .

Sin embargo, cuando construyo la aplicación para producción y la ejecuto, recibo el siguiente error tan pronto como escribo algo en el área de texto:

 index.57b77955.js:3 Uncaught ReferenceError: text is not defined at HTMLTextAreaElement.t.onUpdate:modelValue.s.<computed>.s.<computed> [as _assign] (index.57b77955.js:3:1772) at HTMLTextAreaElement.<anonymous> (vendor.31761432.js:1:53163)

También tengo otros elementos de formulario que muestran exactamente el mismo comportamiento.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede usar un máximo de 1 × etiqueta <script> y un máximo de 1 × <script setup> por componente vue.

Sus salidas se combinarán y el objeto resultante de la combinación de sus exportaciones implícitas o explícitas estará disponible en <template> .

Pero no están conectados. Lo que significa: no espere que ninguna de las dos etiquetas de script tenga visibilidad sobre las import del otro.

La peor parte es que, aunque el primer <script setup> declara Ovewrite cuando lo importas (por lo que debería poder usarse en <template> ), el segundo lo sobrescribe cuando usas components: { Overwrite: Overwrite } , porque Overwrite no está definido en el segundo script. Entonces su declaración de components es equivalente a:

 components: { Overwrite: undefined }

, que sobrescribe el valor ya declarado por <script setup> .


Esto te da dos posibles soluciones:

Solución A:

 <script> import Overwrite from "../components/Overwrite.vue"; export default { components: { Overwrite }, // you don't need `data` (which is Options API). use `setup` instead setup: () => ({ text: ref('') }) } </script>

Solución B:

 <script setup> import Overwrite from "../components/Overwrite.vue"; const text = ref('') </script>

O incluso:

 <script setup> import Overwrite from "../components/Overwrite.vue"; </script> <script> export default { data: () => ({ text: "" }) }; </script>
about 4 years ago · Juan Pablo Isaza Report

0

¿Puedes intentar usar solo la etiqueta del script de configuración? Usarlo solo para importaciones de esta manera no tiene sentido. Si importa un componente en las etiquetas de script de configuración, no necesita configurar components tal vez el problema esté relacionado con eso.

También puede probar la configuración completa entonces:

 <script setup> import { ref } from 'vue' import Overwrite from "../components/Overwrite.vue"; const text = ref('') </script> <template> <div> ... <textarea v-model="text" cols="99" rows="20"></textarea> ... </div> </template>
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!