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加载顺序:
- 加载 plugin,找到应用和框架,加载 config/plugin.js
- 加载 config,遍历 loadUnit 加载 config/config.env.js
- 加载 extend,遍历 loadUnit 加载 app/extend/xx.js
- 自定义初始化,遍历 loadUnit 加载 app.js 和 agent.js
- 加载 service,遍历 loadUnit 加载 app/service 目录
- 加载 middleware,遍历 loadUnit 加载 app/middleware 目录
- 加载 controller,加载应用的 app/controller 目录
- 加载 router,加载应用的 app/router.js
需要在config/plugin.js
中直接引入别名包。require('module-alias/register');
以上是关于egg支持路径别名@的主要内容,如果未能解决你的问题,请参考以下文章
compilerOptions.paths 不得设置(不支持别名导入)
每次我从 Python 库路径调用 .egg 时,AWS Glue 作业都会崩溃