发布于2026-07-11 阅读(0)
扫一扫,手机访问
很多开发者会遇到一个熟悉的尴尬场景:在 .js 文件里写 ,编辑器安安静静——没有语法高亮,没有错误提示,甚至没法跳转到组件定义。别急着怀疑自己的代码,问题出在编辑器身上:VSCode 默认没把 .js 后缀的文件当成 JSX 来解析。
VSCode 默认不将 .js 文件识别为 JSX,需手动关联 language mode 为 ja vascriptreact:临时方案是点击右下角语言模式并输入 ja vascriptreact;永久方案是在项目 .vscode/settings.json 中配置 files.associations 按路径映射 .js 文件,并重启 ESLint Server 使规则生效。

.js 文件里写 JSX 没反应VSCode 根据文件扩展名决定语言模式:.js 默认对应 ja vascript(不含 JSX),.jsx 才对应 ja vascriptreact(含 JSX)。但像 CRA、Vite 这类现代脚手架,普遍用 .js 写 React 组件。这时候不是让你改后缀名,而是手动告诉 VSCode:“这个 .js 文件,请用 JSX 的方式对待它。”
.js 文件 → 右下角语言模式当前显示 “Ja vaScript” → 点击后输入 ja vascriptreact 按回车 还是不高亮,说明拼写有误或没生效。正确的值是 ja vascriptreact,不是 jsx 或 react
- 改完语言模式后,必须重启 ESLint Server(
Ctrl+Shift+P → ESLint: Restart ESLint Server),否则像 react/react-in-jsx-scope 这类规则压根不会加载
怎么永久让 .js 文件支持 JSX
在项目根目录下创建 .vscode/settings.json,只对当前项目生效,不会污染全局配置:
{
"files.associations": {
"src/**/*.js": "ja vascriptreact",
"pages/**/*.js": "ja vascriptreact"
}
}
- 路径模式支持 glob 通配符,比如
"components/**/*.js" 同样有效;如果你想全局生效可以写 "**/*.js",但慎用——它会匹配 node_modules 下的 .js,拖慢 VSCode 启动速度
- 别写成
"*.js": "ja vascriptreact",这会匹配所有目录下的 .js 文件,包括第三方库,得不偿失
- 改完保存后,最好重启 VSCode 或至少重新打开项目文件夹,再验证:随便在
.js 文件里写一行 const a = ,看看是否出现了语法高亮和自动补全提示
.jsx 文件还是不识别 JSX 怎么办
即便用了 .jsx 后缀,VSCode 仍然可能把它当普通 Ja vaScript 处理——除非你明确设为 ja vascriptreact 模式。
- 临时方案:打开
.jsx 文件 → 右下角语言模式 → 输入 ja vascriptreact
- 永久配置可以加在
.vscode/settings.json 里:{
"files.associations": {
"*.jsx": "ja vascriptreact",
"*.tsx": "typescriptreact"
}
}
- 如果你用的是 TypeScript,还要确认
tsconfig.json 里有 "jsx": "react-jsx" 配置,否则 .tsx 仍然可能漏掉 JSX 解析
- 验证方式:写一行
const x = ,如果不再报 Parsing error: Unexpected token '>',说明配置成功了
ESLint 不报红但终端能扫出问题
这通常是 ESLint 插件没读到项目配置,或者语言模式没切换导致规则压根没加载。常见于刚初始化的 CRA 或 Vite 项目。
- 先确认项目根目录存在
eslint.config.js、.eslintrc.cjs 或 package.json 里的 eslintConfig 字段
- 确认当前语言模式已经是
ja vascriptreact(右下角检查)
- 重启 ESLint Server 不是可选项,而是必须步骤——很多人改完设置就以为有效,结果漏了这一步
- 如果项目还用了 Prettier,注意 Prettier 默认不校验 JSX 规则,必须靠 ESLint +
eslint-plugin-react 来驱动
最后说一个最容易踩的坑:改完 settings.json 后忘了重启 ESLint Server,或者 tsconfig.json 里漏了 jsx 配置。这两步没做,JSX 支持就始终是半残状态,折腾半天还以为是编辑器坏了。
本文转载于:https://www.php.cn/faq/2808672.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。
产品推荐
-
售后无忧
立即购买>
- DAEMON Tools Lite 10【序列号终身授权 + 中文版 + Win】
-
¥150.00
office旗舰店
-
售后无忧
立即购买>
- DAEMON Tools Ultra 5【序列号终身授权 + 中文版 + Win】
-
¥198.00
office旗舰店
-
售后无忧
立即购买>
- DAEMON Tools Pro 8【序列号终身授权 + 中文版 + Win】
-
¥189.00
office旗舰店
-
售后无忧
立即购买>
- CorelDRAW X8 简体中文【标准版 + Win】
-
¥1788.00
office旗舰店
-
正版软件
- ~a在C语言中是按位取反操作符,用于对变量a的每一位进行取反操作。具体来说,如果某一位是0,则变为1;如果是1,则变为0。需要注意的是,C语言中并没有“~”这个
- 在C语言中,~操作符的作用是对操作数的每一位进行取反操作。1)对于整数5,取反后变为-6;2)在嵌入式系统中,可用于控制LED灯开关;3)需注意有符号整数取反可能导致符号位变化;4)在网络编程中,可用于快速切换标志位状态。
-
23小时前 13:51
150
-
正版软件
- using namespace 使用中遇到的问题怎么解决
- 命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,
-
12天前
0
-
正版软件
- c语言函数递归 实操经验总结:这些技巧很实用
- 理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接
-
12天前
0
-
正版软件
- c语言函数递归 怎么选?常见方案对比分析
- 递归函数的基本概念与适用场景在C语言编程中,递归是一种函数调用自身的编程技巧。它并非适用于所有问题,但在处理某些具有自相似结构的问题时,能提供极其清晰和优雅的解决方案。递归的核心思想是将一个大规模问题分解为一个或多个同类型但规模更小的子问题,直到子问题简单到可以直接求解。典型的适用场景包括树形结构的
-
12天前
0
-
正版软件
- Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解
- 理解内存管理的基石在Objective-C的编程世界中,内存管理是开发者必须掌握的核心技能之一。它直接关系到应用的性能、稳定性与资源利用效率。与一些采用自动垃圾回收机制的语言不同,Objective-C在很长一段时间里,依赖一套基于引用计数的、需要开发者部分介入的管理规则。这套规则的核心思想是明确的
-
12天前
0
最新发布
-
1
-
2
-
3
- C语言中\n是什么意思?换行转义字符详解
- 345天前
-
4
- 探析Spring Boot框架的优点和特色
- 661天前
-
5
- 深入比较PyCharm社区版和专业版的功能
- 599天前
-
6
- 专家观点:谷歌是否会继续支持Golang的探讨
- 575天前
-
7
-
8
- Python实战教程:批量转换多种音乐格式
- 1207天前
-
9
- 如何在在线答题中实现试卷的自动批改和自动评分
- 1035天前
相关推荐
热门关注
-
- Nero AI Video Upscaler
- ¥27.30-¥39.00
-
- DockFlow
- ¥45.00-¥45.00
-
- 远离手机
- ¥10.00-¥10.00
-
- Trym
- ¥19.00-¥19.00
-
- Scherlokk
- ¥99.00-¥99.00