electron-vite_17设置系统音量loudness报错

发布于:2025-02-11 ⋅ 阅读:(39) ⋅ 点赞:(0)

loudness是一款控制系统音量输出的一款 Node.js 库;但是在electron-vite中直接使用编译的时候会报错;这个时候需要单独处理;

错误分析
  • error Error: spawn E:\xxx\out\main\adjust_get_current_system_volume_vista_plus.exe

在这里插入图片描述

  • 查看编译后项目确实没有这个exe文件,应该electron-vite的编译机制问题;既然找到问题就好办了;

在这里插入图片描述

  • node_modules/loudness/impl/windows ;可以找到这个文件;

在这里插入图片描述

解决方案

思路打包编译的时候复制这个exe到out文件目录

项目中引入版本
// 项目中版本
"loudness": "^0.4.2"
// 下载
npm i loudness -D
编写复制逻辑vite-plugin-loudnessCopy.ts
// 拷贝loudness文件  
import fs from 'fs';
import path from 'path';

export default function loudnessCopy() { 
  return {
    name: 'vite-plugin-loudnessCopy',
    configResolved(resolvedConfig: any) {  
    },
    buildStart() {
      // 源文件路径
      const source = path.join('node_modules', 'loudness', 'impl', 'windows', 'adjust_get_current_system_volume_vista_plus.exe');
      // 目标目录路径
      const destinationDir = path.join(__dirname, 'out', 'main');
      // 确保目标目录存在
      fs.mkdirSync(destinationDir, { recursive: true });
      // 目标文件路径
      const destination = path.join(destinationDir, path.basename(source));
      // 检查文件是否存在
      fs.access(source, fs.constants.F_OK, (err) => {
        if (err) {
          console.log('文件不存在,不执行复制操作。');
          return;
        }
        // 复制文件
        fs.copyFile(source, destination, (err) => {
          if (err) {
            console.error('复制文件时出错:', err);
          } else {
            console.log('文件复制成功。');
          }
        });
      });
    }
  }
}
在electron.vite.config文件中引入插件
// 引入插件
import loudnessCopy from './vite-plugin-loudnessCopy'
export default defineConfig({
	...,
	// 使用插件
	plugins: [react(), loudnessCopy()],
	...,
})
主进程main.js中写入测试demo
import loudness from 'loudness';
function createWindow(): void {
	loudness.getVolume().then((val) => {
	  console.log('successs', val);
	}).catch((error) => {
	  console.log('error', error);
	});
}
控制台打印结果

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到