在Node.js环境中出现“require is not defined”报错,根本原因是该语法属于CommonJS规范,而现代浏览器或ES模块(ESM)环境默认不支持此语法,需通过构建工具转换或改用import语句解决。
报错根源与场景解析
模块规范的代际冲突
Node.js早期版本严格遵循CommonJS规范,使用`require()`同步加载模块,随着前端工程化演进,ES Modules(ESM)成为行业标准,2026年主流浏览器(Chrome 120+、Safari 17+)及Node.js 20+ LTS版本中,若直接在`.js`文件中混用或误用`require`,且未配置正确的模块类型,引擎将无法识别该全局函数。典型触发场景
- 浏览器原生执行:直接在HTML中通过`
