diff --git a/lib/controllers/preview-app-controller.ts b/lib/controllers/preview-app-controller.ts index bedfde8326..9634718d99 100644 --- a/lib/controllers/preview-app-controller.ts +++ b/lib/controllers/preview-app-controller.ts @@ -19,6 +19,7 @@ export class PreviewAppController extends EventEmitter implements IPreviewAppCon private $hmrStatusService: IHmrStatusService, private $logger: ILogger, public $hooksService: IHooksService, + private $pluginsService: IPluginsService, private $prepareController: PrepareController, private $previewAppFilesService: IPreviewAppFilesService, private $previewAppPluginsService: IPreviewAppPluginsService, @@ -48,6 +49,8 @@ export class PreviewAppController extends EventEmitter implements IPreviewAppCon } private async previewCore(data: IPreviewAppLiveSyncData): Promise { + const projectData = this.$projectDataService.getProjectData(data.projectDir); + await this.$pluginsService.ensureAllDependenciesAreInstalled(projectData); await this.$previewSdkService.initialize(data.projectDir, async (device: Device) => { try { if (!device) { @@ -71,7 +74,6 @@ export class PreviewAppController extends EventEmitter implements IPreviewAppCon }); } - const projectData = this.$projectDataService.getProjectData(data.projectDir); await this.$hooksService.executeBeforeHooks("preview-sync", { hookArgs: { ...data, platform: device.platform, projectData } }); if (data.useHotModuleReload) { diff --git a/test/services/playground/preview-app-livesync-service.ts b/test/services/playground/preview-app-livesync-service.ts index a93d4a7562..105789a1ab 100644 --- a/test/services/playground/preview-app-livesync-service.ts +++ b/test/services/playground/preview-app-livesync-service.ts @@ -184,6 +184,9 @@ function createTestInjector(options?: { executeBeforeHooks: () => ({}), executeAfterHooks: () => ({}) }); + injector.register("pluginsService", { + ensureAllDependenciesAreInstalled: () => { return Promise.resolve(); } + }); return injector; }