babel@7和笑话配置



也许你可以帮我?我尝试将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": {
"transform": {
"^.+\.js$": "babel-7-jest",
},

得到

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string

但是如果我使用

"jest": {
"transform": {
"^.+\.js$": "babel-jest",
},

我有

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配置:https://gist.github.com/SilentImp/1506e9c26d16d9839a4469c6f3ae5c4d

也许你有一些想法?

我相信我已经找到了一个有效的解决方案(不,这要归功于Jest团队提供了破碎的文档,并围绕这个问题回避了GitHub问题(。

您需要package.jsondevDependencies部分中的以下内容:

"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"
}

.babelrc中的以下内容:

{
"presets": [
[
"@babel/preset-env",
{
"debug": false,
"targets": {
"browsers": [
"last 3 versions"
]
}
}
]
]
}

在我的特定项目中,我不需要使用Jest配置,所以我删除了空的jest.config.js文件。

要点:

  • 删除babel-7-jest,因为现在官方支持它,所以这是不推荐使用的
  • 确保以后只使用@babel/xyz包——我安装的babel-core桥接器是使用最新Babel7的"官方"方式。我想在未来的某个时刻,随着一切都迁移到巴别塔7,这种需求将被消除
  • 您现在可以使用包括import/export在内的ES6+功能,不再需要过时的require()

编辑:

如果你想有一个更详细的通过/不通过测试的日志,那么把它放在你的jest.config.js:中

module.exports = {
"verbose": true   
}

您可以在这里找到一个工作示例和教程。

这些都是我的巴别塔包:

"@babel/core": "^7.1.2",
"@babel/node": "^7.0.0",
"@babel/preset-env": "^7.1.0",
"@babel/preset-react": "^7.0.0",
"@babel/register": "^7.0.0",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^23.6.0",
"babel-loader": "^8.0.4"

我不得不像Jest网站上提到的那样安装babel-core@^7.0.0-bridge.0

我的.babelrc:

{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}

我的npm脚本:jest --config ./test/jest.config.json它没有为Babel 7升级而改变。

4天前,Facebook为jest添加了babel 7支持,因此不再需要使用babel 7桥。

有关详细信息:https://github.com/facebook/jest/blob/master/README.md#using-巴氏

在看到这篇文章之前,我已经为这个问题挣扎了几天,但运气不佳。非常感谢大家发布他们的工作成果!

为了清楚起见,这是我的配置。这是一个使用Jest的VueJs应用程序。希望这能帮助到某人:(

我的测试的npm脚本

"test:unit": "jest --config ./jest.config.js"

我的babel包装

"@babel/core": "^7.6.2",
"babel-loader": "^8.0.4",
"babel-core": "^7.0.0-bridge.0",
"@babel/preset-env": "^7.6.2",
"babel-eslint": "^10.0.1",
"babel-jest": "^23.6.0",
"@vue/cli-plugin-babel": "^3.11.0",

babel.config.js

module.exports = {
presets: [
[
'@babel/preset-env',
{
debug: false,
targets: {
browsers: ['last 3 versions'],
},
},
],
],
};

jest.conf.js

module.exports = {
verbose: true,
moduleFileExtensions: ['js', 'json', 'vue'],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
transform: {
'^.+\.vue$': 'vue-jest',
'.+\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\.(js|jsx)?$': 'babel-jest',
},
transformIgnorePatterns: ['<rootDir>/node_modules/'],
testMatch: ['**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'],
collectCoverage: false,
collectCoverageFrom: ['src/components/*.{js,vue}', '!**/node_modules/**'],
coverageReporters: ['html', 'text-summary'],
};

相关内容

  • 没有找到相关文章

最新更新