插件依赖 msedge-tts 时导入失败(createRequire.resolve.paths is not a function)
#8250
emberlivable-37
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
概要
在 已有 DSH_HOME 的
webprofile 上,插件只要静态依赖msedge-tts就加载不了,profile-resolution 抛:环境
0.1.7-rc.2(当日 npmlatest),Windows 11,Nodev24.16.0web,DSH_HOME 是已有目录(含安装树~/.dsh/profiles/node_modules)dsh-voice-mode@0.7.15(第三方),lib/index.js:1062有import { MsEdgeTTS, OUTPUT_FORMAT } from "msedge-tts";启动时表现为:
复现(不用重启,走同一套导入通道)
stdout 的
x-cordis.entries里同一行也是"status": "error"。定位到具体包
探针 profile(bundles 只有
@deepseek-ai/dsh-base+@deepseek-ai/dsh-web-app,patch insert 若干行,每行指向一个只做一件事的.mjs):import * as m from 'msedge-tts'import * as s from 'sherpa-onnx'import * as sn from 'sherpa-onnx-node'import z from '@deepseek-ai/schemastery'import * as vm from 'dsh-voice-mode'(裸名 import 整个插件)⇒ 触发点就是
msedge-tts@2.0.8的导入,与dsh-voice-mode本身无关。这不是「旧 home 才会有的通用问题」
GET /voice-mode→{"ok":true,"name":"dsh-voice-mode","enabled":true,"active":null}dsh-better-sidebar的依赖(大量@codemirror/*、mermaid等)同样只存在于 profile 的node_modules,导入正常 ⇒ 不是"profile 树内的依赖一律失败"。msedge-tts@2.0.8的清单特征main: "./dist/index"(无扩展名)、CJS、无exports字段;依赖axios / buffer / isomorphic-ws / stream-browserify / ws均已安装。纯 Node 里import('msedge-tts')正常。猜测的出错点(供参考)
packages/boot/app-boot/src/profile-resolution/resolver.ts的包目录探测(nativePackageDir,worker bundle 里同一段)会调用createRequire(parent).resolve.paths(name);在 interception 生效的环境里resolve.paths不存在,于是抛 TypeError 而没有回退到原生解析。注意:我给 worker bundle 那三个调用点加过探针,都没触发,所以真正抛点可能在别的 helper,或者那个原生 addon 里。期望
同一个 profile 树 + 安装树组合下,插件静态依赖一个 registry 包应当能导入;探测失败时应回退到原生解析,而不是抛
TypeError。补充:
dsh-v0.2.0-rc.2(今天 09-29 发布)的 release notes 里没有看到解析/插件加载相关的修复条目;npmlatest仍是0.1.7-rc.2。All reactions