vitejs / vite-plugin-vue2

Vite plugin for Vue 2.7
MIT License
551 stars 47 forks source link

Using vue-property-decorator and "default" string causes error #27

Closed rs3d closed 2 years ago

rs3d commented 2 years ago

Hi,

I'm experiencing a strange issue. Whenever I use default as class prop or even as a string like defaultSomething in a JS-comment in my .vue-files, the following error shows up:

Error:

10:57:46 AM [vite] Internal server error: Cannot overwrite across a split point
  Plugin: vite:vue2
  File: app/src/components/Form/FormStepProgress.vue
      at MagicString.overwrite (\app\node_modules\@vue\compiler-sfc\dist\compiler-sfc.js:2362:11)
      at \app\node_modules\@vue\compiler-sfc\dist\compiler-sfc.js:8182:15
      at Array.forEach (<anonymous>)
      at Object.rewriteDefault (\app\node_modules\@vue\compiler-sfc\dist\compiler-sfc.js:8180:9)
      at genScriptCode (\app\node_modules\@vitejs\plugin-vue2\dist\index.cjs:2993:37)
      at transformMain (\app\node_modules\@vitejs\plugin-vue2\dist\index.cjs:2911:54)
      at TransformContext.transform (\app\node_modules\@vitejs\plugin-vue2\dist\index.cjs:3248:16)
      at Object.transform (file:///app/node_modules/vite/dist/node/chunks/dep-1513d487.js:35277:53)
      at async loadAndTransform (file:///app/node_modules/vite/dist/node/chunks/dep-1513d487.js:39776:29)

Deps:

on Windows@11

Update

DEMO: https://stackblitz.com/edit/vue2-vite-starter-gkrjjz?file=src/components/Test.vue Exporting an interface in combination with the string 'defaultXXX' inside a comment shows the error.

I assume that this line is causing the error: at genScriptCode (\app\node_modules\@vitejs\plugin-vue2\dist\index.cjs:2993:37) Code scriptCode = options.compiler.rewriteDefault(script.content, "_sfc_main", [...defaultPlugins, ...userPlugins]);

ammartinCIC commented 2 years ago

+1

ZeroThe2nd commented 2 years ago

Also happening for me, but with Vite version v2.9.14, and Vue version v2.7.8.

CreMindES commented 2 years ago

I can also reproduce this on

Seems to be related to

as when moving the default export [className] after the class declaration, everything works nicely.

rs3d commented 2 years ago

After updating to vue@2.7.10 the issue is gone: https://stackblitz.com/edit/vue2-vite-starter-th6fyw?file=package.json

@CreMindES This might had fixed it in 2.7.9 according to the changelog: https://github.com/vuejs/vue/pull/12747