From dbb190e303d4fd86b3f140b29e25e4b475739287 Mon Sep 17 00:00:00 2001
From: 0xfe <2953427626@qq.com>
Date: Mon, 29 Dec 2025 13:25:57 +0800
Subject: [PATCH 1/2] feat: add error handling for rpc. adjust ui to fit long
package names.
---
.../src/app/components/packages/Table.vue | 22 +++++++++---
.../rpc/functions/rolldown-get-packages.ts | 35 ++++++++++++++++---
2 files changed, 48 insertions(+), 9 deletions(-)
diff --git a/packages/vite/src/app/components/packages/Table.vue b/packages/vite/src/app/components/packages/Table.vue
index 0429b0de..6d733102 100644
--- a/packages/vite/src/app/components/packages/Table.vue
+++ b/packages/vite/src/app/components/packages/Table.vue
@@ -2,7 +2,7 @@
import type { PackageInfo, SessionContext } from '~~/shared/types'
import { useRoute } from '#app/composables/router'
import { useCycleList } from '@vueuse/core'
-import { Menu as VMenu } from 'floating-vue'
+import { Tooltip, Menu as VMenu } from 'floating-vue'
import { settings } from '~~/app/state/settings'
withDefaults(defineProps<{
@@ -69,9 +69,23 @@ function toggleSizeSortType() {
:class="[index === packages.length - 1 ? 'border-b-0' : '']"
:to="{ path: route.path, query: { package: `${item.name}@${item.version}` } }"
>
-
-
-
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
{{ item.version }}
diff --git a/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts b/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts
index 38e99c6d..a1108900 100644
--- a/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts
+++ b/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts
@@ -1,3 +1,4 @@
+import type { PnpmError } from '@pnpm/error'
import type { PackageInfo } from '../../../shared/types'
import type { RolldownEventsReader } from '../../rolldown/events-reader'
import { readProjectManifestOnly } from '@pnpm/read-project-manifest'
@@ -42,8 +43,21 @@ export async function getPackagesManifest(reader: RolldownEventsReader) {
}
})
await Promise.all(packages.map(async (p) => {
- const manifest = await readProjectManifestOnly(p.dir)
- const packageKey = `${manifest.name!}@${manifest.version!}`
+ let packageKey = ''
+ let manifest = null
+
+ try {
+ manifest = await readProjectManifestOnly(p.dir)
+ packageKey = `${manifest.name!}@${manifest.version!}`
+ }
+ catch (err: any) {
+ if (err?.code === 'ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND') {
+ packageKey = `${p.dir}`
+ }
+ else {
+ throw err
+ }
+ }
const packageInfo = packagesManifest.get(packageKey)
const importers = getImporters(p.path, p.dir).map(i => ({ path: i, version: '' }))
if (packageInfo) {
@@ -59,8 +73,8 @@ export async function getPackagesManifest(reader: RolldownEventsReader) {
}
else {
packagesManifest.set(packageKey, {
- name: manifest.name!,
- version: manifest.version!,
+ name: manifest?.name || p.dir,
+ version: manifest?.version || '(unknown)',
dir: p.dir,
files: [{
path: p.path,
@@ -101,7 +115,18 @@ export const rolldownGetPackages = defineRpcFunction({
if (duplicated) {
files = await Promise.all(files.map(async (f) => {
const importers = await Promise.all(f.importers.map(async (i) => {
- const manifest = isNodeModulePath(i.path) ? await readProjectManifestOnly(getPackageDirPath(i.path)) : null
+ let manifest = null
+ try {
+ if (isNodeModulePath(i.path)) {
+ manifest = await readProjectManifestOnly(getPackageDirPath(i.path))
+ }
+ }
+ catch (err) {
+ const pnpmError = err as PnpmError
+ if (pnpmError.code !== 'ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND') {
+ throw err
+ }
+ }
return { ...i, version: manifest?.version ?? '' }
}))
return { ...f, importers }
From ab7ff1baa27ac30573d686de3ec1ed21200a310a Mon Sep 17 00:00:00 2001
From: 0xfe <2953427626@qq.com>
Date: Mon, 29 Dec 2025 20:42:44 +0800
Subject: [PATCH 2/2] chore: improve consistency of error handling.
---
.../vite/src/node/rpc/functions/rolldown-get-packages.ts | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts b/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts
index a1108900..218d7867 100644
--- a/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts
+++ b/packages/vite/src/node/rpc/functions/rolldown-get-packages.ts
@@ -1,4 +1,3 @@
-import type { PnpmError } from '@pnpm/error'
import type { PackageInfo } from '../../../shared/types'
import type { RolldownEventsReader } from '../../rolldown/events-reader'
import { readProjectManifestOnly } from '@pnpm/read-project-manifest'
@@ -121,9 +120,8 @@ export const rolldownGetPackages = defineRpcFunction({
manifest = await readProjectManifestOnly(getPackageDirPath(i.path))
}
}
- catch (err) {
- const pnpmError = err as PnpmError
- if (pnpmError.code !== 'ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND') {
+ catch (err: any) {
+ if (err?.code !== 'ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND') {
throw err
}
}