web-dev-qa-db-ja.com

babel @ 7およびjest構成

たぶんあなたは私を助けるかもしれない? babel @ 7を使用するようにjestを設定しようとしています。

"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構成

"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 config: https://Gist.github.com/SilentImp/1506e9c26d16d9839a4469c6f3ae5c4d

たぶんあなたはいくつかのアイデアを持っていますか?

20
SilentImp

実用的なソリューションを見つけたと思います(壊れたドキュメントを提供し、この問題に関するGitHubの問題を回避するJestチームのおかげではありません)。

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ブリッジは、最新のBabel 7を使用する「公式」な方法です。この必要性は将来削除されると思いますすべてがBabel 7に移行します。
  • import/exportなどのES6 +の機能を使用できるようになり、時代遅れのrequire()は不要になりました。

編集:

合格/不合格テストのより詳細なログが必要な場合は、これをjest.config.jsに入れてください。

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

here で実際の例とチュートリアルを見つけることができます。

これらはすべて私の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"

そして、私はbabel-core@^7.0.0-bridge.0JestのWebサイトで言及 のようにインストールする必要がありました。

。babelrc

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

Npmスクリプト:jest --config ./test/jest.config.json Babel 7のアップグレードでは変更されませんでした。

6
Robin Wieruch

4日前、Facebookがjestにbabel 7のサポートを追加したため、もはやbabel 7ブリッジを使用する必要はありません。

詳細: https://github.com/facebook/jest/blob/master/README.md#using-babel

3
Idan Gozlan