diff --git a/packages/core/server/src/plugin-manager/plugin-manager-repository.ts b/packages/core/server/src/plugin-manager/plugin-manager-repository.ts index 86e2c5e648..ac2d3cda6d 100644 --- a/packages/core/server/src/plugin-manager/plugin-manager-repository.ts +++ b/packages/core/server/src/plugin-manager/plugin-manager-repository.ts @@ -128,7 +128,12 @@ export class PluginManagerRepository extends Repository { } const sorter = new Topo.Sorter(); for (const pluginName of pluginNames) { - const packageJson = await PluginManager.getPackageJson(pluginName); + let packageJson: any = {}; + try { + packageJson = await PluginManager.getPackageJson(pluginName); + } catch (error) { + packageJson = {}; + } const peerDependencies = Object.keys(packageJson?.peerDependencies || {}); sorter.add(pluginName, { after: peerDependencies, group: packageJson?.packageName || pluginName }); } diff --git a/packages/core/server/src/plugin-manager/plugin-manager.ts b/packages/core/server/src/plugin-manager/plugin-manager.ts index 44f70a5445..21097505e2 100644 --- a/packages/core/server/src/plugin-manager/plugin-manager.ts +++ b/packages/core/server/src/plugin-manager/plugin-manager.ts @@ -130,9 +130,11 @@ export class PluginManager { */ static async getPackageJson(nameOrPkg: string) { const { packageName } = await this.parseName(nameOrPkg); - const file = await fs.realpath(resolve(process.env.NODE_MODULES_PATH, packageName, 'package.json')); - const data = await fs.readFile(file, { encoding: 'utf-8' }); - return JSON.parse(data); + const packageFile = resolve(process.env.NODE_MODULES_PATH, packageName, 'package.json'); + if (!(await fs.exists(packageFile))) { + throw new Error(`Cannot find plugin '${nameOrPkg}'`); + } + return fs.readJSON(packageFile); } /**