Create-React-App v3无法与其他组件的绝对导入一起运行Jest测试

时间:2019-06-19 19:30:31

标签: reactjs jestjs babeljs

根据(https://facebook.github.io/create-react-app/docs/importing-a-component#absolute-imports)的指导,我试图在导入其他组件和库的项目(https://github.com/refayathaque/k1y0b1eahsqztk48)中的两个组件上运行Jest测试。

在本地运行应用程序时,绝对路径导入可以正常工作,并且所有内容均按预期进行渲染,但是在Jest测试期间,绝对路径导入无法正常工作。

我以前在'.env'文件中使用过'NODE_PATH = src /',但是CRA3建议我们不要使用,而是使用'jsconfig.json'文件。我有“ jsconfig.json”文件,但测试仍未运行。下面的代码是我在“ jsconfig.json”文件中拥有的代码:

{
    "compilerOptions": {
      "baseUrl": "src"
    },
    "include": ["src"]
}

Jest的错误消息:

Test suite failed to run

    /Users/refayathaque/Documents/k1y0b1eahsqztk48/node_modules/react-s3/lib/ReactS3.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import Signature from "./Signature";
                                                                                                    ^^^^^^^^^

    SyntaxError: Unexpected identifier

1 个答案:

答案 0 :(得分:0)

我终于设法解决了这个问题。重要的是rootDirbaseUrl中的tsconfig.json相同,并且moduleNameMapper的{​​{1}}也包含正确的映射。

这就是我的设置的工作原理:

jest中:

tsconfig.json

以及在{ "compilerOptions": { "baseUrl": ".", "paths": {}, "rootDir": ".", // ... }, "include": ["."], "exclude": [ // ... ] } 配置中的任意位置,无论您是否使用jest创建应用程序

create-react-app

我的 "jest": { "moduleNameMapper": { "src(.*)$": "<rootDir>/src$1" } }, 文件包括:.env

这适用于像这样的进口: NODE_PATH=src/

这是针对使用import {StyledDropdown} from 'src/components';create-react-app)创建的项目,而不是使用react-scripts-ts@3.1.0弹出的项目。