我希望能够使用网页别名来解决导入时,使用jest,并优化,参考webpack.aliases,以避免重复.

Jest :

  "jest": {
    "modulePaths": ["src"],
    "moduleDirectories": ["node_modules"],
    "moduleNameMapper": {
      "^@shared$": "<rootDir>/shared/",
      "^@components$": "<rootDir>/shared/components/"
    }
  },

网页包别名:

exports.aliases = {
    '@shared': path.resolve(paths.APP_DIR, 'shared'),
    '@components': path.resolve(paths.APP_DIR, 'shared/components'),
};

进口:

import Ordinal from '@shared/utils/Ordinal.jsx';
import Avatar from '@components/common/Avatar.jsx';

由于某些原因,@会导致问题,因此当删除时(在alias和import中),它可以找到shared,但仍然无法解决components.

 FAIL  src/shared/components/test/Test.spec.jsx
  ● Test suite failed to run

    Cannot find module '@shared/utils/Ordinal.jsx' from 'Test.jsx'

我试过使用jest-webpack-aliasbabel-plugin-module-resolverJest/Webpack docs

推荐答案

这似乎已经解决了.

以下是工作设置:

Versions

"jest": "~20.0.4"

"webpack": "^3.5.6"

package.json

"jest": {
  "moduleNameMapper": {
    "^@root(.*)$": "<rootDir>/src$1",
    "^@components(.*)$": "<rootDir>/src/components$1",
  } 
}

webpack.shared.js

const paths = {
  APP_DIR: path.resolve(__dirname, '..', 'src'),
};

exports.resolveRoot = [paths.APP_DIR, 'node_modules'];

exports.aliases = {
  '@root': path.resolve(paths.APP_DIR, ''),
  '@components': path.resolve(paths.APP_DIR, 'components'),
};

Reactjs相关问答推荐

如何将google地址lat收件箱设置为输入值?

如何使用React Router创建响应式主详细信息应用程序?

使用Thattle和Use Effect setTimeout进行搜索有什么不同

XChaCha20-Poly1305的解密函数

GitHub页面未正确显示Reaction应用程序网站

useEffect firebase 清理功能如何工作?

如何使用服务器中的数据自动填充表单字段?

从 redux 调用UPDATE_DATA操作时状态变得未定义

Spring Boot + React + MySQL应用的架构层面有哪些?

无法读取未定义的属性(阅读 'editQuoteModalShown')reactredux

在 CrafterCMS Studio 中拖动字段

Recharts 笛卡尔网格 - 垂直线和水平线的不同样式

来自一个自定义 React Native 组件的样式从另一个自定义组件移除样式

我如何在所有组件中使用 Chakra UI toast?

如何在props 更改时运行自定义挂钩?

如何根据数据库中的值设置单选按钮选中? - react

如何在 Reactjs 中判断受保护路由上的用户角色?

RTK 查询 POST 方法不会改变数据

bootstrap 导航栏切换器在 reactjs 中不起作用

a.active 类在导入 x.scss 文件时有效,但在使用 x.module.scss 时无效