【问题标题】:module alias cannot resolve for jest (CRA and customize-cra)模块别名无法解析为玩笑(CRA 和 custom-cra)
【发布时间】:2019-06-27 17:24:05
【问题描述】:

我用 CRA 创建了一个 react 应用并添加了react-app-rewiredTypeScript 我在tsconfig.json中映射了一些模块

{
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "@constants/*": ["constants/*"],
      "@components/*": ["components/*"],
      "@grid/*": ["components/Grid/*"],
      "@grid-share/*": ["components/Grid/Share/*"],
      "@utils/*": ["util/*"],
      "@services/*": ["Services/*"]
    }
  },
  "extends": "../tsconfig.json"
}

并将它们定义为config-overrides.js中的别名模块

const path = require('path');
const { override,  addBabelPlugins } = require('customize-cra');   
module.exports = override(
  ...addBabelPlugins(
    [
      'module-resolver',
      {
        root: ["./src"],
        alias: {
          "@constants": "./src/constants",
          "@components": "./src/components",
          "@grid": "./src/components/grid",
          "@utils": "./src/util",
          "@services": "./src/Services",
          "@grid-share": "./src/components/Grid/Share"
        }
      }
    ],
  ),
);

对于yarn start,一切正常,但对于yarn test,它无法解析定义的模块。我应该怎么做才能解析jest的别名模块?

【问题讨论】:

  • 您是否尝试过设置NODE_PATH=src 而不是使用别名?
  • 我在 .env 中添加 NODE_PATH 时使用打字稿,它显示一个警告,指出它已被弃用
  • 我只是友好地指出你不需要 react-app-rewired,CRA 支持它;并且在将 CRA 更新到较新版本时,重新布线也会带来很多麻烦。这是链接:facebook.github.io/create-react-app/docs/…
  • @ChristopherFrancisco:实际上它不在我的控制范围内。应用程序已实现,公司都是管理 UI 模板,这迫使我们重新布线

标签: reactjs create-react-app


【解决方案1】:

好的,我找到了答案。我们需要在 package.json 中定义相同的模块别名

 "jest": {
    "moduleNameMapper": {
      "@constants/(.*)": "<rootDir>/src/constants/$1",
      "@utils/(.*)": "<rootDir>/src/util/$1",
      "@grid-share/(.*)": "<rootDir>/src/components/Grid/Share/$1",
      "@grid/(.*)": "<rootDir>/src/components/Grid/$1"
    }
  },

【讨论】:

    猜你喜欢
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2019-04-17
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多