EJS 文件在 VS Code 中无高亮、无提示、格式化失效,根本原因是原生不支持,必须安装 vscode-ejs-language-service 插件(作者 DigitalBrainstem),并配合 Prettier 配置 documentSelectors 和 formatOnSave 才能正常工作。

EJS 文件在 VS Code 里不亮、不提示、格式化失效?不是你配错了,是默认根本没语言服务支持。 VS Code 原生不识别 .ejs 文件结构,把它当纯 HTML 或纯 JS 处理,结果就是标签乱缩进、 块内代码无高亮、自动补全失灵——装错插件或只改 settings.json 都解决不了底层缺失的问题。
必须装 vscode-ejs-language-service,别选其他“EJS”名插件
目前唯一稳定提供语法高亮、块级错误检测、基础自动补全和格式化桥接能力的扩展,就是 vscode-ejs-language-service(作者 DigitalBrainstem)。它不是“锦上添花”,而是 EJS 支持的必要前提。
- 在扩展市场搜
vscode-ejs-language-service,认准作者名,别装EJS Language Support或EJS Snippets这类只做高亮/片段的插件 - 安装后务必执行
Developer: Reload Window(快捷键Ctrl+Shift+P/Cmd+Shift+P),否则右下角语言模式仍显示为Plain Text或HTML - 点击右下角语言模式,手动选
EJS;若没出现该选项,说明插件未生效或未重载
格式化要靠 Prettier + 插件桥接,不是开个开关就行
vscode-ejs-language-service 自身不带格式化引擎,它把 .ejs 文件“翻译”成 Prettier 能理解的 AST 结构。所以你得同时满足两个条件:Prettier 已安装且设为默认格式化器,并显式告诉它处理 .ejs 文件。
- 确保已安装
Prettier - Code formatter扩展(作者 esbenp) - 在
settings.json中添加:"prettier.documentSelectors": ["**/*.ejs"](注意不是"**/.ejs") - 不要配
"ejs.formatter.enable": true这类伪配置——这是旧版插件的字段,当前主流插件不读这个 - 保存文件时触发格式化,需同时开启
"editor.formatOnSave": true
别往 ESLint / stylelint 上硬套,它们会报一堆无效错误
EJS 是混合模板, 和 不是标准 JS 或 HTML 语法,ESLint 的 parser 根本无法解析块内逻辑。强行配 eslint-plugin-html 或自定义 parser,只会让报错变成“Unexpected token
- 关闭所有对
.ejs文件启用 ESLint 的设置,比如删掉"eslint.validate": ["html", "ejs"] - 也别装
eslint-plugin-ejs——2026 年已无人维护,与 ESLint v9+ 不兼容 - 校验逻辑应放在运行时(如 Express 的
views目录加载阶段)或单元测试中,而非编辑器静态检查
真正卡住人的地方,往往不是“怎么装”,而是装完没 reload、语言模式没切对、或者误信了过时文档里的 ejs.formatter.* 配置项。EJS 格式化本身就有天然边界:遇到多层嵌套 混写,Prettier 就会跳过整块——这不是 bug,是模板语言混写的客观限制。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











