fluent-ffmpeg/node-fluent-ffmpeg

Could not resolve "./lib-cov/fluent-ffmpeg" from "./lib-cov/fluent-ffmpeg?commonjs-external"

XIAO-RUI-RUI opened this issue · 1 comments

Error

Could not resolve "./lib-cov/fluent-ffmpeg" from "./lib-cov/fluent-ffmpeg?commonjs-external"
file: ./lib-cov/fluent-ffmpeg?commonjs-external


Environment

win10、node v18.17.1、ts-node v10.9.1、Vite+Vue3。


Files

I use Vue3+Vite init my project, when I import fluent-ffmpeg in electron/main.ts, error opened like this.
electron/main.ts

import { generateFirstFrame } from './VideoProcess.ts'


function handleGenerateFirstFrame(event: Event, videoPath: string): string {
  ***
  generateFirstFrame(videoPath, destSaveImagePath).then(() => {
    console.log('true')
  }).catch(err => {
    console.log(err)
  })
  
  return destSaveImagePath
}

generateFirstFrame() come from electron/VideoProcess.ts

import ffmpeg from 'fluent-ffmpeg'

// ffmpeg.setFfmpegPath('F:/SDK/ffmpeg/bin/ffmpeg.exe')

function generateFirstFrame(videoPath: string, saveImagePath: string): Promise<void> {
  return new Promise<void>(async (resolve, reject) => {
    const [width, height] = await getVideoSize(videoPath)
    
    ffmpeg(videoPath)
      .screenshots({
        timestamps: [1],
        filename: saveImagePath,
        size: `${height}x${width}`
      })
      .on('end', () => {
        resolve()
      })
      .on('error', (err: any) => {
        reject()
      })
    })
}

And my test file is process successfully, but when I use in electron/main.ts, error occours. My VideoProcess.test.ts:

import { generateFirstFrame, getVideoSize } from '../VideoProcess.ts'

const videoPath = 'D:/Video/my-test.mp4'
const outputPath = 'D:/Video/test.png'

generateFirstFrame(videoPath, outputPath).then(() => {
  console.log('true')
}).catch(err => {
  console.log(err)
})

Wish someone help me! Thinks in advance!

I had the exact same issue, but with a different package on my project running Electron+Vite. The issue went away after I followed the instructions for adding the package as a native module: https://www.electronforge.io/config/plugins/vite#native-node-modules