Node.js 低于14.18.0会导致Tailwind v3+ JIT初始化失败,因旧版缺乏glob高级匹配、fs.promises稳定支持及ESM兼容性,引发路径扫描中断、监听失效和静默漏扫,唯一确定解法是升级Node。

Node.js 版本低于 14.0 会导致 JIT 编译器初始化失败
Tailwind v3+ 的 JIT 引擎依赖 Node.js 的 glob 模块高级匹配能力(如 brace expansion、extglob)和 fs.promises.readdir 的稳定行为。Node.js 12.x 及更早版本对这些 API 支持不完整或存在 bug,导致 content 路径扫描直接中断——你看到的不是“样式没生效”,而是构建日志里压根没有 JIT 初始化提示,甚至 npx tailwindcss -i ./src/index.css -o ./dist/tailwind.css --watch 会卡住不动。
- 最低安全版本是
Node.js 14.18.0(LTS),推荐用16.20.2或18.20.2(当前 LTS) - 运行
node -v确认版本;若输出v12.x或v13.x,必须升级 - Vite / Next.js 等框架的 dev server 可能隐式降级使用旧 Node,需检查进程实际运行环境(
process.version)而非终端显示版本
旧版 Node 对 ESM 和顶层 await 的兼容性问题会破坏 JIT 监听机制
JIT 的文件变更监听依赖 chokidar + fs.watch 组合,而 v3 默认启用 ESM 配置(尤其在 postcss.config.js 使用 export default 时)。Node.js 14 之前对 import 语法和顶层 await 的处理不稳定,容易导致 TAILWIND_MODE=watch 启动后监听器注册失败——保存文件无反应,热更新失效,但构建仍能跑通(只是退化为全量编译)。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 临时规避:把
postcss.config.js改成 CommonJS 格式(module.exports = { plugins: [...] }) - 但根本解法仍是升级 Node,因为
chokidar@4+(Tailwind v3 依赖)已放弃对 Node.js <14 的支持 - 注意:某些 CI 环境(如 GitHub Actions 默认 Ubuntu-18.04)自带 Node.js 10,必须显式指定
node-version: '16'
Node.js 旧版本下 content 路径 glob 匹配行为异常
比如写 ["./src/**/*.{js,jsx,ts,tsx}"],在 Node.js 12 下 glob 可能错误地跳过 .tsx 文件,或把 ** 解析为单层目录——结果就是 JSX/TSX 里的 className="text-lg" 完全不被扫描,JIT 退化为“看不见任何 class”。这种问题不会报错,只会静默失效。
- 验证方式:在项目根目录运行
npx tailwindcss --jit --content "./src/**/*.{ts,tsx}" --debug,观察输出是否列出你预期的组件文件 - 旧 Node 下可降级使用更保守的路径写法,例如拆成多个条目:
["./src/**/*.ts", "./src/**/*.tsx"],避开 brace expansion - 但不要长期依赖此 workaround——不同 glob 实现(
fast-globvsglob)在旧 Node 上行为差异大,极易漏扫

















