SavageCore / node-ffprobe-installer

Platform independent binary installer of FFprobe for node projects
https://www.npmjs.com/package/@ffprobe-installer/ffprobe
70 stars 29 forks source link

Requiring package via variable breaks package #160

Open zhuyifang opened 3 years ago

zhuyifang commented 3 years ago

My operating environment is as follows: macOS 11.23 electron 13.0.1

Run the following code in the main process of electron:

const FfmpegCommand = require('fluent-ffmpeg');
import {path as ffmpegPath} from'@ffmpeg-installer/ffmpeg';
command = new FfmpegCommand({
     source: item.m3u8
   });
command.setFfmpegPath(ffmpegPath)

node reported an error: not find XXXXX XXXX is the value of npm3Package

After testing, it is caused by the use of variables in require, In line 35 of the file @ffmpeg-installer/ffmpeg/index.js: packageJson = require(npm3Package); I modified it to: packageJson = require(''+npm3Package); The program can run normally, so...

SavageCore commented 2 years ago

Which node version are you using? I can't replicate this myself.

zhuyifang commented 2 years ago

Electron : 13.1.9

I am not using a pure nodejs environment But in the Electron environment

import ffmpegCommand from 'fluent-ffmpeg' import {path as ffmpegPath} from '@ffmpeg-installer/ffmpeg' new ffmpegCommand({ source: filePath });

image

zhuyifang commented 2 years ago

After I changed it to this, no error will be reported and it can run normally

if (verifyFile(npm3Binary)) {
    ffmpegPath = npm3Binary;
    packageJson = require('@ffmpeg-installer/'+platform + (os.platform() === 'win32' ? '\\' : '/') + 'package.json');
    //packageJson = require(npm3Package);
}