Fix FFmpeg import: use direct import like ImageMagick
Import FFmpeg at module level instead of dynamic import. The build now compiles cleanly without Turbopack bundler warnings. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -1,9 +1,6 @@
|
|||||||
// Suppress Turbopack bundler warning for FFmpeg's dynamic imports
|
|
||||||
// The @ffmpeg/ffmpeg package internally uses dynamic imports that Turbopack
|
|
||||||
// flags as "too dynamic" but still work at runtime
|
|
||||||
declare const globalThis: any;
|
|
||||||
|
|
||||||
import type { ConverterEngine, WASMModuleState } from '@/types/media';
|
import type { ConverterEngine, WASMModuleState } from '@/types/media';
|
||||||
|
import type { FFmpeg as FFmpegType } from '@ffmpeg/ffmpeg';
|
||||||
|
import { FFmpeg } from '@ffmpeg/ffmpeg';
|
||||||
import { initializeImageMagick } from '@imagemagick/magick-wasm';
|
import { initializeImageMagick } from '@imagemagick/magick-wasm';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,23 +14,18 @@ const moduleState: WASMModuleState = {
|
|||||||
/**
|
/**
|
||||||
* Cached WASM instances
|
* Cached WASM instances
|
||||||
*/
|
*/
|
||||||
let ffmpegInstance: any = null;
|
let ffmpegInstance: FFmpegType | null = null;
|
||||||
let imagemagickInstance: any = null;
|
let imagemagickInstance: any = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load FFmpeg WASM module
|
* Load FFmpeg WASM module
|
||||||
*/
|
*/
|
||||||
export async function loadFFmpeg(): Promise<any> {
|
export async function loadFFmpeg(): Promise<FFmpegType> {
|
||||||
if (ffmpegInstance && moduleState.ffmpeg) {
|
if (ffmpegInstance && moduleState.ffmpeg) {
|
||||||
return ffmpegInstance;
|
return ffmpegInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Import FFmpeg at runtime to avoid static bundler analysis
|
|
||||||
// The @ffmpeg/ffmpeg package has internal dynamic imports that
|
|
||||||
// Turbopack cannot statically analyze, but they work fine at runtime
|
|
||||||
const { FFmpeg } = await import('@ffmpeg/ffmpeg');
|
|
||||||
|
|
||||||
if (!FFmpeg) {
|
if (!FFmpeg) {
|
||||||
throw new Error('FFmpeg class not available');
|
throw new Error('FFmpeg class not available');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user