egg支持路径别名@

本文介绍了如何通过module-alias库在Node.js项目中设置别名,以缩短require导入路径。安装module-alias后,在package.json中配置别名,并在app.js启动项中注册。别名在特定文件(如config/plugin.js)中可能无效,因为它们在app.js加载前执行。理解Egg.js加载顺序对于正确使用module-alias至关重要。
摘要由CSDN通过智能技术生成

module-alias别名设置

设置别名可以简化require引入路径长度,但是node默认不支持,可以借助module_alias来实现对别名的支持,类似webpack中resolve:{alias:{"util":path.join(__dirname,'src','util')}},,支持@符号。

安装

安装:npm install module-alias --save
使用:package.json 中添加

 "_moduleAliases": {
    "@root": ".",
    "@app": "app"
  },

app.js 启动项中引入

configWillLoad() {
    // 此时 config 文件已经被读取并合并,但是还并未生效
    // 这是应用层修改配置的最后时机
    // 注意:此函数只支持同步调用
    require('module-alias/register');
    // 例如:参数中的密码是加密的,在此处进行解密
  
    // 例如:插入一个中间件到框架的 coreMiddleware 之间

  }

文件中使用:
以下代表 根路径下的 app / exceptions / http_exceptions.js 文件
const { HttpExceptions } = require('@app/exceptions/http_exceptions');


补充说明

按照上面设置之后,大多数情况下使用时没有问题的,但是在config/plugin.js config/config.{env}.js app/extend/xx.js中使用@是无效的,原因是这时候,app.js还没有加载执行,别名设置还没有生效。下面是egg加载顺序:

  1. 加载 plugin,找到应用和框架,加载 config/plugin.js
  2. 加载 config,遍历 loadUnit 加载 config/config.{env}.js
  3. 加载 extend,遍历 loadUnit 加载 app/extend/xx.js
  4. 自定义初始化,遍历 loadUnit 加载 app.js 和 agent.js
  5. 加载 service,遍历 loadUnit 加载 app/service 目录
  6. 加载 middleware,遍历 loadUnit 加载 app/middleware 目录
  7. 加载 controller,加载应用的 app/controller 目录
  8. 加载 router,加载应用的 app/router.js

需要在config/plugin.js中直接引入别名包。require('module-alias/register');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT飞牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值