parcel-bundler / parcel

The zero configuration build tool for the web. πŸ“¦πŸš€

Home Page:https://parceljs.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vue 3 defineProps fail with imported types

Demivan opened this issue Β· comments

πŸ› bug report

When using Vue defineProps<Type>() compilation fails when type is imported from a separate file.

<script setup lang="ts">
import type { ExternalProps } from './types';

defineProps<ExternalProps>();
</script>

πŸŽ› Configuration (.babelrc, package.json, cli command)

Default config

{
  "scripts": {
    "build": "parcel build index.html"
  },
  "devDependencies": {
    "@parcel/transformer-vue": "2.12.0",
    "parcel": "^2.12.0"
  },
  "dependencies": {
    "vue": "^3.4.21"
  }
}

πŸ€” Expected Behavior

Using imported types for defineProps (and other Vue macros) should work.

😯 Current Behavior

  Error: [@vue/compiler-sfc] No fs option provided to `compileScript` in non-Node environment. File system access is required for resolving imported types.
  
  /parcel-vue/src/App.vue
  2  |  import type { ExternalProps } from './types';
  3  |  
  4  |  defineProps<ExternalProps>();
     |              ^^^^^^^^^^^^^
  5  |  </script>
  6  |  
      at ScriptCompileContext.error (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:15575:11)
      at importSourceToScope (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18385:16)
      at resolveTypeFromImport (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18374:23)
      at innerResolveTypeReference (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18261:14)
      at resolveTypeReference (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:18249:20)
      at innerResolveTypeElements (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17854:24)
      at resolveTypeElements (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:17799:20)
      at resolveRuntimePropsFromType (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19324:20)
      at extractRuntimeProps (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19300:17)
      at genRuntimeProps (/parcel-vue/node_modules/.pnpm/@vue+compiler-sfc@3.4.21/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js:19288:18)

πŸ’ Possible Solution

Pass fs configuration to compileScript.

πŸ”¦ Context

πŸ’» Code Sample

https://github.com/Demivan/parcel-vue

🌍 Your Environment

Software Version(s)
Parcel 2.12.0
Node 21.6.2
pnpm 8.12.1
Operating System Linux (NixOS)