首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >尽管tsconfig包括` JSX‘选项,但Jest拒绝解析JSX

尽管tsconfig包括` JSX‘选项,但Jest拒绝解析JSX
EN

Stack Overflow用户
提问于 2019-03-08 12:28:00
回答 1查看 3.6K关注 0票数 2

我试着用Jest测试用类型记录编写的响应组件,但是当我运行测试时,我得到了以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cannot use JSX unless the '--jsx' flag is provided.

该项目需要多个tsconfig文件(一个用于节点服务器,另一个用于客户端源),因此该项目的结构如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/root
  package.json
  jest.config.js
  /src
    tsconfig.json
  /server
    tsconfig.json

我目前只尝试在src目录中运行测试。我认为问题在于ts-jest没有加载正确的tsconfig文件,但是在浏览了它们的文档、问题并在空闲通道上询问之后,我找不到任何方法将--jsx标志传递给ts-jest或指定要使用的tsconfig。

以下是我的配置文件的内容:

/root/jest.config.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  roots: [
    '<rootDir>/src',
  ],
  transform: {
    '^.+\\.tsx?$': 'ts-jest',
  },
  testRegex: '/__tests__/.*\\.test\\.tsx?$',
  moduleFileExtensions: [
    'ts',
    'tsx',
    'js',
    'jsx',
    'json',
    'node',
  ],
  setupFilesAfterEnv: ['jest-enzyme'],
  testEnvironment: 'enzyme',
};

/root/src/tsconfig.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "compilerOptions": {
    "plugins": [
      {
        "name": "typescript-styled-plugin"
      }
    ],
    "target": "es2018",
    "lib": ["es2018", "dom"],
    "jsx": "react",
    "moduleResolution": "node",
    "allowJs": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "sourceMap": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "noImplicitReturns": true,
    "outDir": "../dist/src",
    "baseUrl": ".",
    "typeRoots": ["./types", "../node_modules/@types"]
  }
}

以及我在package.json中的相关依赖项

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"@types/jest": "^24.0.10",
"@types/enzyme": "^3.9.0",
"enzyme": "^3.9.0",
"enzyme-adapter-react-16": "^1.10.0",
"jest": "^24.3.1",
"jest-environment-enzyme": "^7.0.2",
"jest-enzyme": "^7.0.2",
"ts-jest": "^24.0.0",
"ts-node": "^8.0.2",
"typescript": "^3.3.3",
"typescript-styled-plugin": "^0.13.0"

以及失败的测试(位于/root/src/pages/__tests__/index.test.tsx)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from 'react';
import IndexPage from '../index';
import { shallow } from 'enzyme';

describe('pages/index', () => {
  test('Should render without error', () => {
    const wrapper = shallow(<IndexPage/>);
  });
});

我在这里做错什么了?

编辑:

在此期间,我只需将root/src/tsconfig.json迁移到root/tsconfig.json,就可以让它发挥作用。如果我想向服务器添加测试,这是行不通的,但我将使用它,直到出现更好的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-09 12:19:05

默认情况下,ts-jest将查找<roodDir>/tsconfig.json

如果要指定特定的配置文件,请使用global/ts-jest/tsconfig选项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//  package.json/jest or jest.config.json
{
  "globals": {
    "ts-jest": {
      "tsConfig": "<your tsconfig.json file path>"
    }
  }
}

参考资料:https://kulshekhar.github.io/ts-jest/user/config/#options

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55070538

复制
相关文章
babel如何解析jsx
同作为MVVM框架,React相比于Vue来讲,上手更需要JavaScript功底深厚一些,本系列将阅读React相关源码,从jsx -> VDom -> RDOM等一些列的过程,将会在本系列中一一讲解
flyzz177
2022/12/02
6660
babel如何解析jsx
同作为MVVM框架,React相比于Vue来讲,上手更需要JavaScript功底深厚一些,本系列将阅读React相关源码,从jsx -> VDom -> RDOM等一些列的过程,将会在本系列中一一讲解
flyzz177
2022/12/13
5810
React报错之Cannot find name
原文链接:https://bobbyhadz.com/blog/react-typescript-cannot-find-name[1]
chuckQu
2022/08/19
1.3K0
React报错之Cannot find name
JSX
React是用于构建用户界面的JavaScript库, 核心专注于视图,目的实现组件化开发。
用户4793865
2023/01/12
7610
JSX
React报错之Cannot find namespace context
原文链接:https://bobbyhadz.com/blog/react-cannot-find-namespace-context[1]
chuckQu
2022/08/19
8640
React报错之Cannot find namespace context
React JSX
它被称为 JSX, 一种 JavaScript 的语法扩展。 我们推荐在 React 中使用 JSX 来描述用户界面。
陈不成i
2021/07/29
6170
React - jsx
1 1. 什么是JSX语法 2 2. jsx语法示例与渲染的VNode节点 3 3. jsx的渲染流程 4 4. jsx中的js和html的写法不同 5 a. js:{ js语法 } 6 i. 花括号里边一定要返回字符串才能渲染 7 ii. {{ 双花括号表示js语法里的对象格式 }} 8 iii. 花括号里可以写表达式、三元、有返回值且返回字符串的函数调用 9 iv. 花括号里直接放对象报错 10 v. 数组可以直接被渲染到页面中。 11 b. html:<html语法> 12 i. class等关键字不能用做html的属性(如class、for等不行,需要替换成别的) 13 1) class -> className 14 2) for -> htmlFor 15 c. a标签写了以后,必须写href属性 16 d. 组件根节点只能是一个标签,不能有并列标签。否则报错! 17 三种方法实现空白标签包裹:(就像小程序的block标签、又像vue的template标签) 18 i. <React.Fragment>空白标签1</React.Fragment> 19 ii. import { Fragment } from 'react';<Fragment>空白标签1</Fragment> 20 iii. <>空白标签2</> 21 e. 列表渲染 - 迭代的方法(没有for):利用数组进行渲染 22 f. key值唯一的绑定 23 g. 条件切换的使用(没有if else、简直反人类) 24 h. 动态样式的绑定 - style的值需要是一个js语法,包裹在对象里边。 25 i. v-html类似用法:dangerouslySetInnerHTML={ {__html: variableName} }【innerHTML容易造成xss攻击,避免使用】 26 j. jsx中的注释 27 i. 多行注释:{ /** js注释 **/ } 28 ii. 单行注释: 29 { 30 // 单行注释,花括号如果提上来就被注释了。所以换行 31 }
xing.org1^
2019/11/26
2.1K0
React - jsx
React.js 实战之 JSX 简介在 JSX 中使用表达式JSX 本身其实也是一种表达式JSX 属性JSX 嵌套JSX 防注入攻击JSX 代表 ObjectsJSX 的怪异之处
这种看起来可能有些奇怪的标签语法既不是字符串也不是 HTML 它被称为 JSX, 一种 JavaScript 的语法扩展 推荐在 React 中使用 JSX 来描述用户界面 JSX 乍看起来可能比较像是模版语言,但事实上它完全是在 JavaScript 内部实现的
JavaEdge
2018/12/21
2.4K0
手写jsx
JSX 本质上是 React.createElement 的语法糖,返回 VDOM。在运行的时候,需要通过 babel 编译
程序员王天
2023/10/18
1820
jsx语法
jsx = javascript XML jsx :facebook 提出的草案jsx规范:核心规范 https://facebook.github.io/jsx/
静心物语313
2020/03/24
9240
JSX 简介
它被称为JSX,是一个JavaScript的语法扩展。我们建议在REACT中配合使用JSX,JSX可以很好地描述UI应该呈现出它应有交互的本质形式。JSX可能会使人联想到模板语言,但它具有JavaScript的全部功能。
landv
2019/12/10
1.8K0
react源码解析--jsx&核心api
一句话概括就是,用js对象表示dom信息和结构,更新时重新渲染更新后的对象对应的dom,这个对象就是React.createElement()的返回结果
长腿程序员165858
2022/12/12
3640
JSX是什么?
JSX 是 JavaScript 的扩展语法,这种 <MyButton></MyButton> 标签的写法就是 JSX。JSX 编写的组件通过预处理器 babel 解析后,再交给 React 库渲染到指定父容器下,形成最终html页面。
Learn-anything.cn
2021/11/28
9200
react的jsx语法是怎样解析的
废话不多说直接上代码,下面是我写的一个简单的babel-plugin来对jsx语法进行解析
夏天的味道123
2022/09/26
5200
react源码解析5.jsx&核心api
一句话概括就是,用js对象表示dom信息和结构,更新时重新渲染更新后的对象对应的dom,这个对象就是React.createElement()的返回结果
zz1998
2021/11/30
4180
用TypeScript编写React的最佳实践
如今, React 和 TypeScript 是许多开发人员正在使用的两种很棒的技术。但是把他们结合起来使用就变得很棘手了,有时很难找到正确的答案。不要担心,本文我们来总结一下两者结合使用的最佳实践。
ConardLi
2020/06/04
4.7K0
JSX渲染原理
1.基于babel-preset-react-app这个语法解析包,把jsx语法转换成一个名为 React.createElement() 的方法调用。
柴小智
2020/01/15
1.3K0
react源码分析:babel如何解析jsx
同作为MVVM框架,React相比于Vue来讲,上手更需要JavaScript功底深厚一些,本系列将阅读React相关源码,从jsx -> VDom -> RDOM等一些列的过程,将会在本系列中一一讲解
flyzz177
2022/11/23
2660
vue之jsx
可以通过 this.$slots 访问静态插槽的内容,每个插槽都是一个 VNode 数组:
hss
2022/02/25
8430
React 进阶 - JSX
最后,在调和阶段,上述 React element 对象的每一个子节点都会形成一个对应的 fiber 对象,然后通过 sibling、return、child 将每一个 fiber 对象联系起来。
Cellinlab
2023/05/17
7850
React 进阶 - JSX

相似问题

设置Jest测试JSX文件

11

如何使用jest测试jsx组件?

22

"react-scripts“是在tsconfig.json文件中更新我的"jsx":"react”到"jsx":"react-jsx“

13

如何用Jest测试JSX组件

13

JSX导致Jest和Enzyme错误

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文