我开始了一个新的反应项目,我想使用笑话作为测试平台。尽管有文档、博客和许多其他资源,如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'),
],
},
...
如果您在更新到更新的Jest版本后遇到此问题,请尝试清除Jest的内部缓存:
jest --clearCache
假设您已经完成了正常建议的所有操作,但似乎没有任何效果:将文件扩展名从.jsx
更改为.js
。虽然我项目中的一些库/版本可以使用.jsx
,但其他库/版本则不行,试图找出问题的根源是谁简直是一场噩梦。
您不想一直监视团队接触到的每个文件的每个更新,以检查它是添加JSX还是删除JSX的最后一部分。在实践中,当代码发生更改时,通常会从文件中添加和删除它。你要花很多时间,要么手动提醒人们“嘿,你现在应该重命名这个文件”,要么就因为一个小小的代码更改而被linter大喊大叫。并且它打开了同时存在foo.js
和foo.jsx
的可能性-然后会发生什么聪明的同事
如果您仍然想要IDE为JSX文件提供的高亮显示和自动完成功能,您应该能够进行特定于项目的工作区更改。对于VSCode来说,它很简单:
"files.associations": {
"*.js": "javascriptreact"
},
"emmet.syntaxProfiles": {
"javascript": "jsx"
}
我遇到了一个非常类似的问题,最后我解决了这个问题——运行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 代码: 错误: