我正在使用react-native和typescript开发一个应用程序,并使用Jest进行测试,但是当我使用作用域包(@assets)时,我遇到了问题,jest无法找到路径并给出错误。
目录结构如下所示:
project/
assets/
img/
foo.png
package.json
src/
Foo.ts
build/
Foo.js
// assets/package.json
{
"name": "@assets" // My @assets scope
}
// build/Foo.js
const image = require('@assets/img/foo.png'); // <- error in Jest
所以当我开始玩笑时:
npm run jest build /
找不到'@ assets / img / foo.png'并抛出错误:
无法从'Foo.js'找到模块'@ assets / img / logo.png'
如何在Jest中使用范围包?
Jest版本:20.0.4
感谢
答案 0 :(得分:4)
对于那些在一个范围内的组织下使用私有包的人来说,我在这里解决了这个问题:
"jest": {
"moduleNameMapper": {
"^@org-name/(.*)$": "<rootDir>/node_modules/@org-name/$1/dist/$1.es5.js"
}
}
这假设您的所有作用域包都具有与其导出模块类似的路径。如果他们不这样做,您可以单独指定:
"jest": {
"moduleNameMapper": {
"^@org-name/package-one$": "<rootDir>/node_modules/org-name/package-one/dist/package.js",
"^@org-name/package-two$": "<rootDir>/node_modules/org-name/package-two/build/index.js"
}
}
答案 1 :(得分:0)
Necessary only define the .bash_profile
in jest config:
$ ws /some/project/directory
Thanks for this comment :-)