unjs/unimport

error with @vueuse/core preset

amaury-tobias opened this issue · 2 comments

I using this lib with Vite as

  const ctx = createUnimport({
    presets: ['vue', '@vueuse/core'],
    addons: { vueTemplate: true },
  })

and this configuration gives me

Error
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string or an instance of Buffer or URL. Received undefined
  at __node_internal_captureLargerStackTrace (node:internal/errors:477:5)
  at new NodeError (node:internal/errors:388:5)
  at __node_internal_ (node:internal/fs/utils:673:11)
  at __node_internal_ (node:internal/fs/utils:685:3)
  at Object.openSync (node:fs:591:10)
  at Object.readFileSync (node:fs:467:35)
  at vueuseCore (/Users/amaurytobias/garsa/garsa-pdf/node_modules/.pnpm/unimport@0.6.7_vite@3.0.9/node_modules/unimport/dist/chunks/context.cjs:311:41)
  at /Users/amaurytobias/garsa/garsa-pdf/node_modules/.pnpm/unimport@0.6.7_vite@3.0.9/node_modules/unimport/dist/chunks/context.cjs:547:16
  at Array.flatMap (<anonymous>)
  at resolveBuiltinPresets (/Users/amaurytobias/garsa/garsa-pdf/node_modules/.pnpm/unimport@0.6.7_vite@3.0.9/node_modules/unimport/dist/chunks/context.cjs:544:18)
  at createUnimport (/Users/amaurytobias/garsa/garsa-pdf/node_modules/.pnpm/unimport@0.6.7_vite@3.0.9/node_modules/unimport/dist/chunks/context.cjs:629:29)
  at <anonymous> (/Users/amaurytobias/garsa/garsa-pdf/packages/builder/utils/kit.ts:324:15)
  at Object.<anonymous> (/Users/amaurytobias/garsa/garsa-pdf/node_modules/.pnpm/unplugin@0.9.3_vite@3.0.9/node_modules/unplugin/dist/index.js:4:688)
  at writeTypes (/Users/amaurytobias/garsa/garsa-pdf/packages/builder/utils/prepare.ts:130:32)
  at Object.invoke (/Users/amaurytobias/garsa/garsa-pdf/packages/builder/commands/prepare.ts:18:5)
  at _main (/Users/amaurytobias/garsa/garsa-pdf/packages/builder/cli.ts:18:18) {
code: 'ERR_INVALID_ARG_TYPE'
}

On unplugin-auto-import the @vueuse/core preset is different on the lines: 14:24

(unimport)[https://github.com/unjs/unimport/blob/main/src/presets/vueuse-core.ts]

 const path = resolveModule('@vueuse/core/indexes.json')
const indexesJson = JSON.parse(readFileSync(path!, 'utf-8'))
_cache = defineUnimportPreset({
    from: '@vueuse/core',
    imports: indexesJson
      .functions
      .filter((i: any) => ['core', 'shared'].includes(i.package))
      .map((i: any) => i.name as string)
      // only include functions with 4 characters or more
      .filter((i: string) => i && i.length >= 4 && !excluded.includes(i))
})

unplugin-auto-import

const corePath = resolveModule('@vueuse/core') || process.cwd()
const path = resolveModule('@vueuse/core/indexes.json')
    || resolveModule('@vueuse/metadata/index.json')
    || resolveModule('@vueuse/metadata/index.json', { paths: [corePath] })
 indexesJson = JSON.parse(readFileSync(path!, 'utf-8'))

idk if this can resolve the issue.

antfu commented

We temporarily close this due to the lack of enough information.
Please provide a minimal reproduction to reopen the issue.
Thanks.

Why reproduction is required

Sorry, the reproduction is only

const { createUnimport } = require("unimport");

const ctx = createUnimport({
  presets: ["@vueuse/core"],
});
console.log(ctx.generateTypeDeclarations());

the expected output is all the vueuse types, but this throw a

Error TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string or an instance of Buffer or URL. Received undefined at Object.openSync (node:fs:591:10) at Object.readFileSync (node:fs:467:35) at vueuseCore (/Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:311:41) at /Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:547:16 at Array.flatMap () at resolveBuiltinPresets (/Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:544:18) at createUnimport (/Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:629:29) at Object. (/Users/amaurytobias/unimport-iss115/index.cjs:3:13) at Module._compile (node:internal/modules/cjs/loader:1112:14) at Module._extensions..js (node:internal/modules/cjs/loader:1166:10) { code: 'ERR_INVALID_ARG_TYPE' } /Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:318 throw new Error("[auto-import] failed to load @vueuse/core, have you installed it?"); ^

Error: [auto-import] failed to load @vueuse/core, have you installed it?
at vueuseCore (/Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:318:13)
at /Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:547:16
at Array.flatMap ()
at resolveBuiltinPresets (/Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:544:18)
at createUnimport (/Users/amaurytobias/unimport-iss115/node_modules/.pnpm/unimport@0.6.7/node_modules/unimport/dist/chunks/context.cjs:629:29)
at Object. (/Users/amaurytobias/unimport-iss115/index.cjs:3:13)
at Module._compile (node:internal/modules/cjs/loader:1112:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1166:10)
at Module.load (node:internal/modules/cjs/loader:988:32)
at Module._load (node:internal/modules/cjs/loader:834:12)

I think the '@vueuse/core' package don have a indexes.json and unimport preset is searching in this file and this cause error with path.

Here is the minimal reproduction repository