根据(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
答案 0 :(得分:0)
我终于设法解决了这个问题。重要的是rootDir
与baseUrl
中的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
弹出的项目。