依赖问题:非字符串值传入ts.resolveTypeReferenceDirective报错求助
服务端TypeScript编译报错:Non-string value passed to
ts.resolveTypeReferenceDirective 在simple-demo仓库开发时,客户端运行正常,但服务端执行yarn dev出现如下编译报错:
MacBook-Pro$ yarn dev yarn run v1.22.19 warning ../../package.json: No license field $ tsnd --respawn src/index.ts [INFO] 20:34:49 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.9.3) Compilation error in /Users/simple-demo-verifier/server/src/index.ts Error: Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself. at Object.<anonymous> (/Users/simple-demo-verifier/server/src/index.ts:1:7) at Module._compile (node:internal/modules/cjs/loader:1101:14) at Module._compile (/Users/Desktop/simple-demo-verifier/server/node_modules/source-map-support/source-map-support.js:568:25) at Module.m._compile (/private/var/folders/9z/40hxmprd3wq40xbpsyfsqq1r0000gn/T/ts-node-dev-hook-13839828883108773.js:69:33) at Module._extensions..js (node:internal/modules/cjs/loader:1153:10) at require.extensions.<computed> (/private/var/folders/9z/40hxmprd3wq40xbpsyfsqq1r0000gn/T/ts-node-dev-hook-13839828883108773.js:71:20) at Object.nodeDevHook [as .ts] (/Users/simple-demo-verifier/server/node_modules/ts-node-dev/lib/hook.js:63:13) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Module.require (node:internal/modules/cjs/loader:1005:19) [ERROR] 20:34:49 Error: Debug Failure. False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.
已尝试清理node_modules、package-lock.json等文件,问题仍未解决。复现步骤:
- 下载代码
- 进入server目录
- 执行
npm install - 执行
yarn install - 执行
yarn dev
当前项目依赖列表(npm list结果):
├── @aries-framework/core@0.1.0-alpha.284 ├── @aries-framework/node@0.1.0-alpha.284 ├── @aries-framework/rest@0.9.4 ├── cors@2.8.5 ├── express@4.18.2 ├── ngrok@4.3.3 ├── ts-node-dev@1.1.8 ├── ts-node@10.9.1 ├── tslog@3.3.4 └── typescript@4.9.3
此前曾遇到依赖冲突,通过npm install --legacy-peer-deps解决了如下错误:
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: server@1.0.0 npm ERR! Found: @aries-framework/core@0.1.0-alpha.284 npm ERR! node_modules/@aries-framework/core npm ERR! @aries-framework/core@"0.1.0-alpha.284" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer @aries-framework/core@"0.1.0-alpha.268" from @aries-framework/rest@0.1.2 npm ERR! node_modules/@aries-framework/rest npm ERR! @aries-framework/rest@"^0.1.2" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry
解决方案
这个报错的核心原因是ts-node-dev版本过旧(v1.1.8),与TypeScript 4.9.3的resolveTypeReferenceDirectives API签名不兼容,旧版本依赖的ts-node@9.1.1无法适配TS4.9+的类型解析逻辑。可按以下步骤解决:
升级ts-node-dev到兼容版本
卸载旧版本并安装最新版:yarn remove ts-node-dev ts-node yarn add ts-node-dev ts-node --dev或用npm:
npm uninstall ts-node-dev ts-node npm install ts-node-dev ts-node --save-dev统一包管理工具
避免混用npm和yarn,删除package-lock.json后仅用yarn执行安装:rm package-lock.json yarn install验证tsconfig配置
检查tsconfig.json的compilerOptions,确保没有错误的类型引用配置,示例:{ "compilerOptions": { "typeRoots": ["node_modules/@types"], "resolveTypeReferenceDirectives": true } }处理遗留依赖冲突
若升级后仍有依赖问题,可继续用yarn install --legacy-peer-deps或npm install --legacy-peer-deps强制安装,确保@aries-framework系列依赖兼容。
内容的提问来源于stack exchange,提问作者t30_9
相关产品推荐
相关产品推荐

