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

笑话,意外的令牌导入

厍书
2023-03-14

我开始了一个新的反应项目,我想使用笑话作为测试平台。尽管有文档、博客和许多其他资源,如stackoverflow,我总是有一个“意外令牌导入”错误,可能与巴贝尔问题有关,但我的conf似乎还不错。欢迎任何帮助。

我的Jest配置文件(在package.json中)。My package.json具有类似babel jest、babel-preset-es2015、babel preset react等依赖项。

 "jest": {
    "testMatch": [
      "**/?(*.)spec.js?(x)"
    ],
    "moduleDirectories": [
      "src",
      "node_modules"
    ],
    "moduleNameMapper": {
      "^lib/(.*)$": "<rootDir>/src/lib/$1",
      "^components/(.*)": "<rootDir>/src/components/$1",
    },
    "transform": {
      "^.+\\.jsx?$": "babel-jest"
    }

我的. babelrc conf:

{
  "presets": [
    ["es2015", { "modules": false }],
    "react"
  ],
  "plugins": [
    ["react-hot-loader/babel"],
    ["transform-object-rest-spread", { "useBuiltIns": true }],
    ["transform-runtime"]
  ],
  "env": {
      "test": {
        "presets": ["es2015", "react"]
      }
  } 
}

我的规范文件:

import React from 'react';
import Radio from 'components/ui/radio';
...

和组件/ui/无线电(导入错误出现在第一行):

import Container from './container.jsx';
...

我的网页包有两个别名lib和components(在jest中定义为moduleNameMapper)。

...
resolve: {
   mainFiles: ['index', 'main'],
   extensions: ['.js', '.jsx'],
   alias: {
     lib: helpers.getPath('src/lib/'),
     components: helpers.getPath('src/components/'),
   },
   modules: [
     helpers.getPath('src'),
     helpers.getPath('node_modules'),
   ],
}, 
...

共有3个答案

夏侯彬郁
2023-03-14

如果您在更新到更新的Jest版本后遇到此问题,请尝试清除Jest的内部缓存:

jest --clearCache
欧阳学真
2023-03-14

假设您已经完成了正常建议的所有操作,但似乎没有任何效果:将文件扩展名从.jsx更改为.js。虽然我项目中的一些库/版本可以使用.jsx,但其他库/版本则不行,试图找出问题的根源是谁简直是一场噩梦。

您不想一直监视团队接触到的每个文件的每个更新,以检查它是添加JSX还是删除JSX的最后一部分。在实践中,当代码发生更改时,通常会从文件中添加和删除它。你要花很多时间,要么手动提醒人们“嘿,你现在应该重命名这个文件”,要么就因为一个小小的代码更改而被linter大喊大叫。并且它打开了同时存在foo.jsfoo.jsx的可能性-然后会发生什么聪明的同事

如果您仍然想要IDE为JSX文件提供的高亮显示和自动完成功能,您应该能够进行特定于项目的工作区更改。对于VSCode来说,它很简单:

"files.associations": {
    "*.js": "javascriptreact"
},
"emmet.syntaxProfiles": {
    "javascript": "jsx"
}
咸臻
2023-03-14

我遇到了一个非常类似的问题,最后我解决了这个问题——运行jest时没有缓存。

我的package.json中也有一些依赖项,比如babel-jest、babel-preset-es2015、babel-preset-react等。

jest --no-cache
 类似资料:
  • 问题内容: 我正在尝试学习如何使用React和Jest进行单元测试。我遇到了以下错误: 意外的令牌导入 这是我的babel预设: 这是我要测试的文件: 这是我的package.json: 不知道为什么会给我这个信息吗? 问题答案: 您的依赖项中似乎缺少babel-jest。这就是为什么在执行测试之前不在ES6 +代码上运行的原因。

  • 在设置Javascript Dev环境时,我遇到了以下错误。 我想使用代替。 我用了巴别塔。 我从以下方法尝试了许多解决方案,但是,不起作用或我。 节点错误:语法错误:意外的令牌导入 Node.js -语法错误:意外的标记导入 srcServer.js 。巴伯尔克

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

  • 问题内容: 我不明白怎么了。节点v5.6.0 NPM v3.10.6 代码: 错误: 问题答案: 更新3: 从Node 13开始 ,您可以使用.mjs扩展名,也可以在package.json中设置“ type”:“ module”。你 并不 需要使用标志。 更新2: 从Node 12开始 ,您可以使用扩展名,也可以在package.json中进行设置。并且您需要运行带有标志的节点。 更新: 在节点

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

  • 我不明白怎么了。节点V5.6.0 NPM V3.10.6 代码: 错误: