在Turborepo中使用Remix时出现未知.ts文件扩展名错误
Monorepo中集成Remix与react18-themes时出现TS文件扩展名识别错误
问题概述
我正在为react18-themes库开发Remix示例,已有可独立运行的示例项目,但在Monorepo环境下搭建时触发了Node.js模块解析错误:Remix尝试直接读取react18-themes包的TS源文件(packages\react18-themes\index.ts),而非编译后的JS产物。即使将依赖版本从workspace:*替换为已发布的^1.0.8,问题依然存在。
错误日志
TypeError: Unknown file extension ".ts" for ...react18-themes\packages\react18-themes\index.ts at new NodeError (node:internal/errors:399:5) remix-example:dev: at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:79:11) remix-example:dev: at defaultGetFormat (node:internal/modules/esm/get_format:121:38) remix-example:dev: at defaultLoad (node:internal/modules/esm/load:81:20) remix-example:dev: at nextLoad (node:internal/modules/esm/loader:163:28) remix-example:dev: at ESMLoader.load (node:internal/modules/esm/loader:605:26) remix-example:dev: at ESMLoader.moduleProvider (node:internal/modules/esm/loader:457:22) remix-example:dev: at new ModuleJob (node:internal/modules/esm/module_job:64:26) remix-example:dev: at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:480:17) remix-example:dev: at ESMLoader.getModuleJob (node:internal/modules/esm/loader:434:34)
环境信息
- 操作系统:Windows 11
- 问题复现分支:react18-themes仓库的remix分支
可能的解决方向
- 检查包入口配置:确认react18-themes包的
package.json中,main、module字段指向编译后的JS文件(如dist/index.js),而非TS源文件;同时确保types字段正确指向类型声明文件。 - 验证Monorepo依赖链路:如果使用pnpm/yarn Workspace,确保react18-themes包已完成构建,且Remix项目通过正确的包链路引用编译产物,而非直接读取源码目录。
- 配置Remix转译规则:在Remix的
remix.config.js中,通过serverDependenciesToBundle选项将react18-themes加入转译列表,让Remix能正确处理该包的模块格式。 - 调整ES模块配置:确认react18-themes包的
package.json中"type"字段设置正确(如ES模块设为"module"),同时检查Node.js的模块解析模式是否与项目匹配。
内容的提问来源于stack exchange,提问作者Mayank Kumar Chaudhari
相关产品推荐
相关产品推荐

