2019独角兽企业重金招聘Python工程师标准>>>

问题背景

  • 在使用 dva 框架进行项目开发过程中,起初都是使用相对路径的,比如这样:../../../Models
  • 但是项目做到后面,新增了很多目录,导致目录结构很杂乱,这时候就想要整理下项目的目录结构,也就将目录换一个位置;
  • 这时候随便换一个文件就会报找不到文件的错误,遂决定使用绝对路径,像这样:D:/work/antd-admin/src/models/Models
  • 这样也埋了一个坑,就是以后将项目antd-admin移动到 e 盘下,不是又需要重新改路径吗?????

解决方法

  • 问题出现了,就该寻找解决方法。

  • 找了很多资料发现 Webpack 的配置文件中有个 alias 文件,可以解决这个问题。参考资料,详见62-68行

  • 但是在 dva 的配置文件 roadhog 中又明确说道:“你最好不要用 webpack 的配置文件,因为我们之后会更新 roadhog,并不保证兼容 webpack”。考虑到毕竟整体框架还是用人家 dva 的,这里就不埋坑了。

  • 接着找解决办法,在 github 上给 dva 作者 sorrycc 提了这个问题,他提供的解决方案是使用 babel-plugin-module-alias 这个包。

  • 查询上述包的使用发现该包已经废弃了,替代品是 babel-plugin-module-resolver,写法上更加简单。

  • 介绍下 babel-plugin-module-resolver 在 dva 中的使用方法:

    • 安装包:
    $ npm install --save-dev babel-plugin-module-resolver
    
    • 在 .roadhogrc.js 中配置:(主要添加的是 3-9 行)
    0 "env": {
    1     "development": {
    2       "extraBabelPlugins": [
    3         ["module-resolver", {
    4             "root": ["./src"],
    5             "alias": {
    6               "utils": '/utils',
    7               "underscore": "lodash"
    8             }
    9         }]
    10       ]
    11     },
    12   }
    
    // 配置前的写法
    import utils from './src/utils';
    // 配置后的写法
    import utils from 'utils';
    
  • 如果你没有使用 ESlint,到这里就算是解决了,如果你使用 ESlint,会发现 import utils from 'utils'; 这里的 utils 会报错,信息是:can not find utils module,原因是把 utils 当成是一个诸如 fs 这样的模块了,而事实上它只是一个别名。

  • 网上有说用 eslint-import-resolver-babel-module 在 .eslintrc 进行配置即可解决这个问题,作者试了好久都没成功,只能把它当成是使用别名的副作用了。

    • 在 .eslintrc 中配置:
    "settings": {"import/resolver": {"babel-module": {}}},
    
  • 后来也询问了 dav 作者 sorrycc 这问题咋解决,大拿给的答案:

    这是使用 alias 的副作用,副作用还包括不能在 IDE 里直接跳转到指定模块或者函数,
    这也是我为啥不推荐用 alias 并且没有把 webpack 的 alias 配置暴露出来的原因。
    

转载于:https://my.oschina.net/dkvirus/blog/1499600

dva 中使用绝对路径/别名的方法相关推荐

  1. vue项目,webpack中配置src路径别名及使用

    默认会有'@'别名,指向src目录,还可以添加自定义别名等等. 使用方法 使用别名一般就三种情况:在js中用,在css中用,在html文档内用 js中用,最简单: import {getName} f ...

  2. PHP中在公用PHP文件中使用相对路径的正确方法

    公用PHP在不同路径的文件中被引用时,就要让公用PHP文件中的href为一个绝对url,考虑到我们的网站变化移植等因素,我们采用动态获取相对url的办法. <!DOCTYPE html> ...

  3. 【vue】vue中设置路径别名

    前言 转载:https://blog.csdn.net/panchang199266/article/details/90145638 在 CSS 或者 JS 中,有时候需要引入其他相关文件,若目录层 ...

  4. linux中磁盘多路径使用方法

    Linux下多路径multipath配置 一.multipath在linux中的基本配置: 通过命令:lsmod |grep dm_multipath 检查是否正常安装成功.如果没有输出说明没有安装那 ...

  5. mysql在计算机管理中的路径怎么修改_Rstudio中修改工作路径的三种方法

    原文链接: Rstudio中修改工作路径的三种方法_weixin_44370085的博客-CSDN博客_rstudio改变工作目录​blog.csdn.net Rstudio中修改工作路径的三种方法 ...

  6. php设置路径别名,react设置文件路径别名的具体方法你知道么

    文章环境: "react": "^16.13.1" 版本 react官方脚手架默认是将webpack配置隐藏起来了,在进行配置之前需要将webpack给暴露出来 ...

  7. H3C模拟器中文路径问题(提示:“当前系统用户名中包含非ASCII字符”! )方法尝试:

    H3C模拟器中文路径问题(提示:"当前系统用户名中包含非ASCII字符"! )方法尝试: 我的电脑->属性->高级系统设置->高级->环境变量,分别点击TM ...

  8. php img本地图片路径,php 替换文章中的图片路径,下载图片到本地服务器的方法

    php 替换文章中的图片路径,下载图片到本地服务器 /** * 获取替换文章中的图片路径 * @param string $xstr 内容 * @param string $oriweb 网址 * @ ...

  9. linux java获取路径_linux中java获取路径的方法

    linux中java获取路径的方法 发布时间:2020-05-06 11:11:26 来源:亿速云 阅读:700 作者:小新 今天小编给大家分享的是linux中java获取路径的方法,相信很多人都不太 ...

最新文章

  1. openssh windows_WINDOWS环境配置SSH服务
  2. 网络营销——网络营销专员如何做好网站外链优化工作?
  3. 图书大甩卖(操作系统、C语言、Linux) 已成交
  4. php str splice,php中array_replace、array_splice与str_replace函数的比较
  5. 制造业ai中台_如何建立自己的制造者工作台
  6. 破碎纪念---记第二次Nexus4换屏
  7. python从入门到精通pdf-跟老齐学Python+从入门到精通 PDF 下载
  8. android sharedpreference 清空,Android 从SharedPreferences中存储,检索,删除和清除数据...
  9. 公司培训笔记(1):沟通的技巧
  10. C++常用数据类型和Windows常见数据类型
  11. 鸿蒙开放远程测试,跟阿斌一起学鸿蒙(3). 远程虚拟设备的限制和使用方法
  12. C++ Primer 5th ed.pdf
  13. crm系统哪家公司做的最好?企业如何选择crm供应商
  14. 对java.lang.UnsupportedOperationException 异常的分析
  15. GitHub 上史上最全的 iOS 开源项目分类汇总
  16. gwt 测试_GWT应用程序的单元和集成测试
  17. 安装python解释器的时候遇到user installations are disabled via policy on the machine”
  18. uniapp拍照上传功能
  19. HtmlUnit使用体会
  20. wargame v2.1 Web Wrtteup By Assassin

热门文章

  1. 基于Spring可扩展Schema提供自定义配置支持
  2. uvalive3209City Game
  3. Extensible Messaging and Presence Protocol (XMPP): Core
  4. 偷看日历?9款 APP 涉嫌过度获取权限 1
  5. flutter 安装遇坑记录
  6. 中交兴路完成7亿元A轮融资,携手蚂蚁金服共建小微物流科技服务生态
  7. 划分vlan,制作trunk口。使同一vlan能互相通讯
  8. CSS-用伪元素制作小箭头(轮播图的左右切换btn)
  9. Windows Performance Toolkit
  10. LIST 和 MAP