当前位置: 首页 > 知识库问答 >
问题:

Jest测试(使用babel)无效的令牌导入

孔鹤龄
2023-03-14

使用Jest测试Firebase功能,我遇到了导入的麻烦...

console.log

 import 'jest';
    ^^^^^^

    SyntaxError: Unexpected token import

我正在使用@Babel/core和@Babel/preet-env和Babel-jest

package.json

"devDependencies": {
"@babel/core": "^7.1.6",
"@babel/preset-env": "^7.1.6",
"@types/jest": "^23.3.10",
"babel-jest": "^23.6.0",
"eslint": "^4.12.0",
"eslint-plugin-promise": "^3.6.0",
"firebase-functions-test": "^0.1.5",
"jest": "^23.6.0",
"ts-jest": "^23.10.5"
},
"engines": {
"node": "8"
},
"private": true,
"jest": {
"verbose": true,
"transform": {
  "^.+\\.jsx?$": "babel-jest",
  "^.+\\.tsx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"moduleFileExtensions": [
  "ts",
  "tsx",
  "js",
  "jsx",
  "json",
  "node"
  ]
}

我创建了一个babel.config.js文件

babel.config.js

  module.exports = {
    presets: [
      [
        "@babel/preset-env"
      ]
    ]
  };

我错过了什么?谢谢你的反馈

更新

我用Babel文档更新了我的配置。。。(v 7)

console.log

    Cannot find module 'babel-preset-env' from '/Users/yves/Developments/WIP/VUE.JS-cli-3/4-chocha-home-cloudFunctions/chocha/functions'
        - Did you mean "@babel/env"?

package.json

    "devDependencies": {
        "@babel/core": "^7.1.6",
        "@babel/preset-env": "^7.1.6",
        "@types/jest": "^23.3.10",
        "babel-core": "^7.0.0-bridge.0",
        "babel-jest": "^23.6.0",
        "eslint": "^4.12.0",
        "eslint-plugin-promise": "^3.6.0",
        "firebase-functions-test": "^0.1.5",
        "jest": "^23.6.0",
        "regenerator-runtime": "^0.13.1",
        "ts-jest": "^23.10.5"
      },

babel.config.js

    module.exports = {
    presets: [
    ["@babel/env"]
    ]
    };

. babelrc

    {
      "presets": ["env"]
    }

但是我仍然得到一个错误...初学者不太清楚实际上应该使用什么...文档中有太多的建议...我只将JS用于Firebase功能,没有React,没有Vue...

更新

我更新了我的

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

现在我得到了另一个巴别塔错误...

    tests/index.spec.js
      ● Test suite failed to run

        TypeError: programPath.hub.addHelper is not a function

          at wrapInterop (node_modules/@babel/helper-module-transforms/lib/index.js:165:45)
          at PluginPass.exit (node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js:174:70)
          at newFn (../node_modules/@babel/traverse/lib/visitors.js:237:21)
          at NodePath._call (../node_modules/@babel/traverse/lib/path/context.js:65:20)
          at NodePath.call (../node_modules/@babel/traverse/lib/path/context.js:40:17)
          at NodePath.visit (../node_modules/@babel/traverse/lib/path/context.js:109:8)
          at TraversalContext.visitQueue (../node_modules/@babel/traverse/lib/context.js:142:16)
          at TraversalContext.visitSingle (../node_modules/@babel/traverse/lib/context.js:102:19)
          at TraversalContext.visit (../node_modules/@babel/traverse/lib/context.js:182:19)
          at Function.traverse.node (../node_modules/@babel/traverse/lib/index.js:106:17)

共有1个答案

苗学民
2023-03-14

将您的.LRC更改为

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

注意:. Babelrc和babel.config.js是多余的。如果您有一个静态配置,那么只需. babelrc就可以了。

 类似资料:
  • 我在将单元测试集成到项目的特定文件夹中时遇到问题。 我的架构如下: 作业板和管理面板都包含指向共享的符号链接,位于,每个都包含安装了babel eslint的文件夹。shared不包含node_modules文件夹,它依赖于另外两个文件夹的node_模块。 有了这个架构,我成功地配置了我正在使用的所有工具(Webpack、eslint、eslint loader等等,但不是Jest)。 问题是,当

  • 问题内容: 我的项目中已经实现了其他相关问题中提供的解决方案,例如在.babelrc中包含正确的预设(es2015)。 我有两个项目(分别称为A和B),它们都使用ES6模块语法。在项目A中,我导入了通过npm安装的项目B,该项目位于node_modules文件夹中。当我为项目A运行测试套件时,出现错误: SyntaxError:意外的令牌导入 在此之前,项目B声称存在以下错误代码行: (函数(导出

  • 在其他相关问题中提供的解决方案,例如在中包括适当的预设(es2015)。babelrc已在我的项目中实现。 我有两个项目(我们称它们为A和B),它们都使用ES6模块语法。在项目A中,我正在导入通过npm安装的项目B,该项目位于node_modules文件夹中。当我为项目A运行测试套件时,我得到了错误: SyntaxError:意外的令牌导入 前面是项目B中的这一错误代码行: (函数(导出、要求、模

  • 我已经为连接的组件创建了测试。在一个文件中,我导入位于项目根文件夹外部的“本地化”模块。它没有被编译到ES5,Jest报告了同步错误:意外令牌导出。如何强制Jest转换该文件? 我有。带环境预设的巴别LRC。 package.json

  • 我正在学习反应,我想测试我的一个组件,但我坚持这个错误: 以下是我在阅读stackoverflow和github上的帖子时尝试过的一些东西 添加了测试预设和这些插件“变换-es2015-moids-Common js”、动态导入节点”到我的babel配置 在我的包裹里。json Jest属性具有以下设置: 我的实际组件是用ES6和typescript构建的,如果这对您有帮助的话:) 从我所读到的内

  • 是否有人使用es2015语法编写jasmine/jest测试?需要多少填隙/填充胶/选区划分? 我无法正确导入函数。我有一个模块:../utils/TweetUtils.js 和一个测试套件: ../../\uuuuu测试\uuuu/TweetUtils-test.js 如果我用这样的东西将控制台输出破解到套件中: