fix: load lamejs from pre-built browser bundle
Changed MP3 export to dynamically load the pre-built lame.min.js bundle from node_modules instead of trying to import the CommonJS module. The browser bundle properly bundles all dependencies including MPEGMode and exposes a global lamejs object. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -129,6 +129,31 @@ export function downloadArrayBuffer(
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load lamejs library dynamically
|
||||
*/
|
||||
async function loadLamejs(): Promise<any> {
|
||||
// Check if already loaded
|
||||
if (typeof window !== 'undefined' && (window as any).lamejs) {
|
||||
return (window as any).lamejs;
|
||||
}
|
||||
|
||||
// Load the script from node_modules
|
||||
return new Promise((resolve, reject) => {
|
||||
const script = document.createElement('script');
|
||||
script.src = '/node_modules/.pnpm/lamejs@1.2.1/node_modules/lamejs/lame.min.js';
|
||||
script.onload = () => {
|
||||
if ((window as any).lamejs) {
|
||||
resolve((window as any).lamejs);
|
||||
} else {
|
||||
reject(new Error('lamejs failed to load'));
|
||||
}
|
||||
};
|
||||
script.onerror = () => reject(new Error('Failed to load lamejs script'));
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an AudioBuffer to MP3
|
||||
*/
|
||||
@@ -136,9 +161,8 @@ export async function audioBufferToMp3(
|
||||
audioBuffer: AudioBuffer,
|
||||
options: ExportOptions = { format: 'mp3', bitrate: 192 }
|
||||
): Promise<ArrayBuffer> {
|
||||
// Dynamically import lamejs - use default export for CommonJS compatibility
|
||||
const lameModule = await import('lamejs');
|
||||
const lamejs = lameModule.default || lameModule;
|
||||
// Load lamejs library
|
||||
const lamejs = await loadLamejs();
|
||||
|
||||
const { bitrate = 192, normalize } = options;
|
||||
const numberOfChannels = Math.min(audioBuffer.numberOfChannels, 2); // MP3 supports max 2 channels
|
||||
|
||||
Reference in New Issue
Block a user