From 6ce36f7d9b5f9e54d853ac81a63d71525bb2517c Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Mon, 2 Mar 2026 23:29:56 +0300 Subject: [PATCH] fix(web-test): resolve node-edge-tts from tools/node_modules Dynamic import needs file:// URL on Windows and explicit entry point for ESM resolution. Package installed in tools/ alongside ffmpeg. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/web-test/scripts/browser.mjs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.claude/skills/web-test/scripts/browser.mjs b/.claude/skills/web-test/scripts/browser.mjs index ff4d6d9c..079da284 100644 --- a/.claude/skills/web-test/scripts/browser.mjs +++ b/.claude/skills/web-test/scripts/browser.mjs @@ -11,7 +11,7 @@ import { spawn, execFileSync } from 'child_process'; import { statSync, mkdirSync, existsSync as fsExistsSync, writeFileSync, readFileSync, rmSync } from 'fs'; import { dirname, resolve as pathResolve, join as pathJoin, basename, extname } from 'path'; import { tmpdir } from 'os'; -import { fileURLToPath } from 'url'; +import { fileURLToPath, pathToFileURL } from 'url'; import { readSectionsScript, readTabsScript, readCommandsScript, readFormScript, navigateSectionScript, openCommandScript, @@ -3065,7 +3065,10 @@ function resolveFfmpeg(explicit) { * @param {object} opts — { voice } */ async function edgeTtsProvider(text, outputPath, opts = {}) { - const { EdgeTTS } = await import('node-edge-tts'); + // Resolve from tools/node_modules/ (next to ffmpeg) + const __fn = fileURLToPath(import.meta.url); + const ttsModulePath = pathResolve(dirname(__fn), '..', '..', '..', '..', 'tools', 'node_modules', 'node-edge-tts', 'dist', 'edge-tts.js'); + const { EdgeTTS } = await import(pathToFileURL(ttsModulePath).href); const voice = opts.voice || 'ru-RU-DmitryNeural'; const tts = new EdgeTTS({ voice }); await Promise.race([