tsconfig路径和桶文件/相同目录导入的嵌套依赖关系解决问题

雷奇

我在tsconfig.json中设置了一些不同的路径,以使控制器,实体,服务等的导入更易于处理。tsconfig.json的相关部分:

...
"baseUrl": "./src",
"paths": {
  "@hello/controllers": [
    "./controllers"
  ],
  "@hello/entities": [
    "./entity"
  ],
  "@hello/services": [
    "./services"
  ]
},
...

我还在src / controllers /,src / entity /和src / services /目录中创建了桶文件(index.ts),这些文件从这些目录中重新导出了我需要的所有类。

从控制器目录中的文件导入服务时,一切都会按预期进行。例:

// src/controllers/comment.controller.ts
// This works
import { CommentService } from '@hello/services';

@Controller()
export class CommentController {...}

事情从在中的另一个服务文件导入服务时的工作相同的目录。

// src/services/comment.service.ts
// This does NOT work
import { StoryService, UserService } from '@hello/services';
// StoryService, UserService, and CommentService are in the src/services directory 

@Injectable()
export class CommentService {...}

执行上述操作时出现的错误是:

Error: Nest can't resolve dependencies of the CommentService (?, +). Please make sure that the argument at index [0] is available in the AppModule context.

预期的行为我希望依赖项能够使用tsconfig.json中定义的路径来解析,即使它们是从同一目录中导入的也是如此。

可能的解决方案我当前的解决方法是使用相对路径导入文件:

// src/services/comment.service.ts
// This does work
import { StoryService } from './story.service';
import { UserService } from './user.service';
// I'd prefer to do this:
// import { StoryService, UserService } from '@hello/services';

@Injectable()
export class CommentService {...}

环境@ nestjs / common @ 5.7.4 @ nestjs / core @ 5.7.4 [email protected]

src / services中的Update My index.ts桶文件如下所示:

// src/services/index.ts
export * from './comment.service';
export * from './story.service';
export * from './user.service';
雷奇

出口订单事项

在我的index.ts桶文件中,我先导出评论服务,然后再导出用户和故事服务。但是,comment.service.ts类将导入story.service.ts和user.service.ts。必须评论之前导出故事和用户

之前:

// src/services/index.ts
// This does NOT work 
// and throws the "Nest can't resolve dependencies of the CommentService..." error
export * from './comment.service';
export * from './story.service';
export * from './user.service';

正确订购后:

// src/services/index.ts
// This works!
export * from './story.service';
export * from './user.service';
export * from './comment.service';

现在,我可以在评论服务的tsconfig.json中使用导入路径:

import { StoryService, UserService } from '@hello/services';

@Injectable()
export class CommentService {...}

感谢@ ford04暗示问题在index.ts

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

调试Gradle 1.12依赖关系解决问题

如何解决具有完全相同的路径和名称的2个类的依赖关系?

两个带有依赖关系问题的tsconfig文件

Nest 无法解决 AuthService 的依赖关系 - 导入使用 Mongoose 和提供程序的模块的问题

CentOS 7中yum更新期间的Qt5依赖关系解决问题

.NET核心依赖注入解决问题

反应:流程:导入本地js文件-无法解决问题模块

如何使用多对多关系定义解决问题

解决外部文件的依赖关系

无法在Maven中解决导入/依赖关系

我如何整齐地提取子路径以解决Java上的根目录和无根文件夹的问题

Java URI本地文件系统解决问题

运行.exe文件时如何解决问题

使用循环和字典更快地解决问题

更新Xamarin的问题:无法解决依赖关系

sbt publish产生的jar在路径中包含太多文件夹=>未解决的依赖关系

模板重载解决问题

使用 FutureBuilder 解决问题

R帮助解决问题

查找go程序的导入和依赖关系

解决.NET Core和.NET Framework之间的项目依赖关系问题

cmake 问题与 FetchContent 相同的 protobuf 依赖关系在 grpc 和 or-tools 之间

G ++ 4.9.2和8.2.0-具有默认lib路径搜索./../lib目录的最终二进制文件的依赖性(隐式RPATH问题)

如何解决问题 react-router-dom 的切换自动完成导入

使用“。”解决在线SBT依赖关系。路径中的字符

无法将文件保存到iOS中的光盘/沙箱中-如何解决/解决问题?

VBA-解决问题的解决方案Excel保存临时文件

React中的键重复,无法解决问题。遇到两个孩子用相同的钥匙

如何发现性能问题并解决问题