小编Dan*_*les的帖子

如何解决相对路径地狱(带有打字稿的节点)

我正在使用节点、打字稿和其他包开发 CLI。这个想法很简单,CLI 为您提供了节点项目的初始结构(javascript 或 typescript)

\n

嗯,在测试的时候,我发现了一个问题,我好几天都无法解决。初始结构为:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80src\n\xe2\x94\x82    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80api\n\xe2\x94\x82    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80users\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80users.controller.ts/js\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80users.interface.ts (just for typescript projects)\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80users.routes.ts/js\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80users.service.ts/js\n\xe2\x94\x82    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80config\n\xe2\x94\x82    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80environments\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80development.ts/js\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80index.ts/js\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80production.ts/js\n\xe2\x94\x82    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80global\n\xe2\x94\x82    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80services\n\xe2\x94\x82    \xe2\x94\x82        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80abstract.service.ts (just for typescript projects)\n\xe2\x94\x82    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80middlewares\n\xe2\x94\x82    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80database.ts/js\n\xe2\x94\x82    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80index.ts/js\n\xe2\x94\x82    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80server.ts/js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80.editorconfig\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80.env\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80.gitignore\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80package-lock.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80tsconfig.json (just for typescript projects)\n
Run Code Online (Sandbox Code Playgroud)\n

Typescript 服务文件扩展了抽象服务(这个位于 参考资料中./src/global/services/abstract.service.ts)。每个组件都位于./src/api目录中并具有其各自的文件夹(如用户组件)。在users组件中导入抽象类的相对路径是../../global/services/abstract.service

\n

但是您可以在不同的目录中创建组件,因此之前的相对路径不起作用。为了解决这个问题,我决定使用像 webpack 这样的路由配置。所以我不想使用以前的相对路径,而是想使用这样的东西@global/services/abstract.service

\n

如果节点项目使用 javascript 和 babel,我就实现了这一点:

\n
    \n
  • @babel/polyfill
  • \n
  • @babel/cli
  • \n
  • @babel/核心
  • \n
  • @babel/节点
  • \n
  • @babel/预设节点 …

relative-path node.js typescript tsconfig tsconfig-paths

7
推荐指数
0
解决办法
2750
查看次数