babel@7 和 jest 配置 [英] babel@7 and jest configuration
问题描述
也许你可以帮助我?我尝试配置 jest 以使用 babel@7所以我有:
"jest": "^23.4.1","@babel/core": "^7.0.0-beta.54","babel-7-jest": "^21.3.3","babel-jest": "^20.0.3",
和 package.json 中的 jest 配置
玩笑":{转变": {"^.+\.js$": "babel-7-jest",},
得到了
TypeError [ERR_INVALID_ARG_TYPE]:路径"参数必须是字符串类型
但是如果我使用
玩笑":{转变": {"^.+\.js$": "babel-jest",},
我得到了
需要 Babel "^7.0.0-0",但加载了 "6.26.3".如果你确定你有一个兼容版本的@babel/core,很可能是你的构建过程中加载了错误的版本.检查此错误的堆栈跟踪以查找未提及@babel/core"或babel-core"的第一个条目,以查看调用 Babel 的内容.
babel 配置:https://gist.github.com/SilentImp/1506e9c26d16d9839a>
也许你有一些想法?
我相信我已经找到了一个可行的解决方案(不,感谢 Jest 团队提供了损坏的文档并绕过了围绕这个问题的 GitHub 问题).
您的 package.json
的 devDependencies
部分需要以下内容:
"devDependencies": {"@babel/core": "^7.0.0-beta.54","@babel/preset-env": "^7.0.0-beta.54","babel-core": "^7.0.0-bridge.0","babel-jest": "^23.4.0","bili": "^3.1.2","开玩笑": "^23.4.1",再生器运行时":^0.12.0"}
.babelrc
中的以下内容:
<代码>{预设":[["@babel/preset-env",{调试":假,目标":{浏览器":[最后三个版本"]}}]]}
在我的特定项目中,我不需要使用 Jest 配置,所以我删除了我的空 jest.config.js
文件.
要点:
- 删除
babel-7-jest
因为它已被弃用,因为现在有 官方支持. - 确保以后只使用
@babel/xyz
包 - 我安装的babel-core
桥接器是使用最新 Babel 7 的官方"方式. 我想,随着一切迁移到 Babel 7,这种需求将在未来的某个时候被移除. - 您现在可以使用 ES6+ 功能,包括
import/export
,而不再需要过时的require()
.
如果您想获得更详细的通过/失败测试日志,请将其放在您的 jest.config.js
中:
module.exports = {详细":真实}
Maybe you may help me? I try to configure jest to use babel@7 So I have:
"jest": "^23.4.1",
"@babel/core": "^7.0.0-beta.54",
"babel-7-jest": "^21.3.3",
"babel-jest": "^20.0.3",
And jest config inside package.json
"jest": {
"transform": {
"^.+\.js$": "babel-7-jest",
},
And got
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string
But if I use
"jest": {
"transform": {
"^.+\.js$": "babel-jest",
},
I got
Requires Babel "^7.0.0-0", but was loaded with "6.26.3". If you are sure you have a compatible version of @babel/core, it is likely that something in your build process is loading the wrong version. Inspect the stack trace of this error to look for the first entry that doesn't mention "@babel/core" or "babel-core" to see what is calling Babel.
babel config: https://gist.github.com/SilentImp/1506e9c26d16d9839a4469c6f3ae5c4d
Maybe you have some ideas?
I believe I have found a working solution (no thanks to the Jest team providing broken documentation and evading GitHub issues around this issue).
You need the following in your devDependencies
section of your package.json
:
"devDependencies": {
"@babel/core": "^7.0.0-beta.54",
"@babel/preset-env": "^7.0.0-beta.54",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^23.4.0",
"bili": "^3.1.2",
"jest": "^23.4.1",
"regenerator-runtime": "^0.12.0"
}
The following in your .babelrc
:
{
"presets": [
[
"@babel/preset-env",
{
"debug": false,
"targets": {
"browsers": [
"last 3 versions"
]
}
}
]
]
}
In my particular project I did not need to use the Jest config so I deleted my empty jest.config.js
file.
Key points:
- Remove
babel-7-jest
as this is deprecated as there is now official support for it. - Make sure to only use
@babel/xyz
packages going forward - thebabel-core
bridge one I have installed is the "official" way to use latest Babel 7. I imagine this need will be removed at some point in the future as everything migrates to Babel 7. - You can now use ES6+ features including
import/export
and no longer need the antiquatedrequire()
.
Edit:
If you want to have a more detailed log of passing/failing tests then put this in your jest.config.js
:
module.exports = {
"verbose": true
}
这篇关于babel@7 和 jest 配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!