egg支持路径别名@

Posted IT飞牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了egg支持路径别名@相关的知识,希望对你有一定的参考价值。

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');

以上是关于egg支持路径别名@的主要内容,如果未能解决你的问题,请参考以下文章

Subversion 是不是支持分支的别名

compilerOptions.paths 不得设置(不支持别名导入)

每次我从 Python 库路径调用 .egg 时,AWS Glue 作业都会崩溃

react img 被自动转成base64,无法根据当前路径来动态改变值的解决办法

2022,VSCode 前端插件推荐

2022,VSCode 前端插件推荐