web-dev-qa-db-fra.com

configuration babel @ 7 et jest

Peut-être que vous pourriez m'aider? J'essaie de configurer la plaisanterie pour utiliser babel@7Alors j'ai:

"jest": "^23.4.1",
"@babel/core": "^7.0.0-beta.54",
"babel-7-jest": "^21.3.3",
"babel-jest": "^20.0.3",

Et plaisanterie à l'intérieur de package.json

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

Et j'ai 

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

Mais si j'utilise

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

J'ai eu

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.

configuration de babel: https://Gist.github.com/SilentImp/1506e9c26d16d9839a4469c6f3ae5c4d

Peut-être que vous avez des idées?

14
SilentImp

Je pense avoir trouvé une solution efficace (non merci à l'équipe de Jest d'avoir fourni une documentation erronée et d'avoir éludé les problèmes de GitHub liés à ce problème).

Vous avez besoin des éléments suivants dans votre section devDependencies de votre 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"
  }

Ce qui suit dans votre .babelrc:

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

Dans mon projet particulier, je n'avais pas besoin d'utiliser la configuration Jest, j'ai donc supprimé mon fichier jest.config.js vide.

Points clés:

  • Supprimez babel-7-jest car il est déconseillé car il existe maintenant un support officiel pour cela .
  • Assurez-vous de n'utiliser que des packages @babel/xyz à l'avenir. Le pont babel-core que j'ai installé est la méthode "officielle" pour utiliser la dernière version de Babel 7. J'imagine que ce besoin sera supprimé à l'avenir, car tout migre vers Babel 7.
  • Vous pouvez maintenant utiliser les fonctionnalités de ES6 +, y compris import/export, et ne plus avoir besoin de la require() obsolète.

Modifier:

Si vous voulez avoir un journal plus détaillé des tests réussi/échoué, inscrivez ceci dans votre jest.config.js:

module.exports = {
    "verbose": true   
}
14
user9993

Vous pouvez trouver un exemple de travail et un tutoriel sur ici .

Voici tous mes forfaits Babel:

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

Et je devais installer babel-core@^7.0.0-bridge.0 comme il est mentionné sur le site Web de Jest .

Mon .babelrc:

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

Et mon script npm: jest --config ./test/jest.config.json Il n’a pas changé pour la mise à niveau de Babel 7.

5
Robin Wieruch

Il y a 4 jours Facebook a ajouté le support babel 7 à la plaisanterie, inutile d'utiliser le pont babel 7.

Pour plus d'informations: https://github.com/facebook/jest/blob/master/README.md#using-babel

3
Idan Gozlan