typescript开发node项目中,使用路径别名

 0 0条评论

版本

node:16.14.0

typescript:4.7.3

tsconfig-paths:4.0.0

ts-node:10.8.1

node项目中,需要引用模块,如果没有使用别名,那么将会看到很多类似的引用

import Cartoon from '../../../model/safe/cartoon/db'

非常不友好,很容易出错,既然用到typescript了,那么首先在tsconfig.json文件添加以下配置。

    "baseUrl": "./", 
    "paths": {
        "@/*": [
        "src/*"
        ]
    },

意思就是凡事以@开头的路径,都会以src下的根目录为路径,ts里别名设置好了,可以去vscode看看


可以看到vscode已经能识别,但是这里仅仅是识别,实际编译后,仍然会出现错误,node还是从@/这个目录下寻找模块的,那怎么可能找得到?

这里就要用到另一个模块了,tsconfig-paths,点击可以查看官方文档,使用起来非常简单。

安装完毕后,修改package.json文件

"scripts": {
 "start":"nodemon --exec \"ts-node -r tsconfig-paths/register\" ./src/index.ts"
},

现在就能使用别名路径啦,方便很多。

最后补充一点,如果项目tsc发布成js代码后,在服务器上运行仍会报错,提示找不到模块

Error: Cannot find module '@/model/user/db'

这里就要再安装一个模块module-alias,点击官网

在package.json引入

  "_moduleAliases": {
    "@": "./dist"
  },

最后在生成的js项目的启动文件中的顶部再引入此模块

require('module-alias/register')

这样代码才能正确运行。

本文作者:双黑

版权声明:本站文章欢迎链接分享,禁止全文转载!

游客