Reactjs 为网页包和Jest设置地图别名
所以我在我的webpack.config.js上有这个Reactjs 为网页包和Jest设置地图别名,reactjs,webpack,jestjs,Reactjs,Webpack,Jestjs,所以我在我的webpack.config.js上有这个 resolve : { alias : { Actions : path.resolve(__dirname , 'src/actions/'), Components : path.resolve( __dirname , 'src/components/' ), Reducers : path.resolve( __dirname , 'src/reducers/' )
resolve : {
alias : {
Actions : path.resolve(__dirname , 'src/actions/'),
Components : path.resolve( __dirname , 'src/components/' ),
Reducers : path.resolve( __dirname , 'src/reducers/' ),
Sagas : path.resolve( __dirname , 'src/sagas/' )
}
},
一切都很好,我的测试应用程序运行良好,我能够导入我的组件,我能够构建我的应用程序
然而
我的玩笑测试失败
resolve : {
alias : {
Actions : path.resolve(__dirname , 'src/actions/'),
Components : path.resolve( __dirname , 'src/components/' ),
Reducers : path.resolve( __dirname , 'src/reducers/' ),
Sagas : path.resolve( __dirname , 'src/sagas/' )
}
},
在控制台上,我从组件文件中找不到模块名
因此,我尝试在我的jest.config.json文件上设置moduleNameMapper
这就是我现在拥有的
"moduleNameMapper" : {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$" : "<rootDir>/src/__mocks__/fileMock.js",
"\\.(css|less|scss|sass)$" : "<rootDir>/src/__mocks__/styleMock.js",
"^Actions$" : "<rootDir>/src/actions/",
"^Reducers$" : "<rootDir>/src/reducers/",
"^Components$" : "<rootDir>/src/components/",
"^Sagas$" : "<rootDir>/src/sagas/"
}
“moduleNameMapper”:{
“\ \(jpg | jpeg | png | gif | eot | otf | webp | svg | ttf | woff | woff2 | mp4 | webm | wav | mp3 | m4a | aac | oga |)$”:“/src/| uu mocks | uuuuuuuu/fileMock.js,
“\\(css | less | scss | sass)$”:“/src/uu mocks\uuu/styleMock.js”,
“^Actions$”:“/src/Actions/”,
“^Reducers$”:“/src/Reducers/”,
“^Components$”:“/src/Components/”,
“^Sagas$”:“/src/Sagas/”
}
似乎不起作用,我得到了与上面截图相同的错误
你能帮我完成我想做的事情吗?那就是有一个可以在webpack和jest上使用的地图别名
提前感谢。您是否尝试使用“^Actions”而不是“^Actions$”?结尾的美元符号通常意味着正则表达式模式仅在字符串(您的所需字符串)结束时匹配。@Felix我这样做了,但它只是说“配置错误:找不到moudle……”与上述错误不同。嗯。。。我刚遇到这个。正如我在那里和官方文档中看到的,jest需要直接映射到特定文件,这意味着您必须使用如下配对:
“^Actions(.*)$”:“/src/Actions$1”
@Felix It worked!谢谢你,伙计!非常感谢。