You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行server.js报ReferenceError: require is not defined错误是什么原因

报错触发原因及解决方案

核心原因

该报错的根本原因是当前 Node.js 项目启用了 ES 模块规范,但代码中使用了 CommonJS 规范的 require 语法加载依赖,两种模块规范不兼容。
最常见的触发场景是你的 package.json 文件中配置了 "type": "module" 字段,Node.js 13 及以上版本中,添加该配置后所有 .js 后缀文件都会被默认识别为 ES 模块,原生不支持 require 调用。

可选解决方案

你可以根据开发需求选择任意一种适配方案:

  • 方案1:保留 CommonJS 规范
    直接删除 package.json 中的 "type": "module" 配置即可,Node.js 会默认将 .js 文件识别为 CommonJS 模块,原生支持 require 语法。
  • 方案2:全量切换为 ES 模块规范
    将代码中所有 require 语法替换为 ES 模块的 import 语法,修改后的 server.js 对应代码如下:
    import express from "express";
    import cors from 'cors';
    const app = express();
    import dotenv from 'dotenv'
    import passport from "passport";
    import userRoutes from './routes/userRoutes.cjs'
    
    dotenv.config()
    
    补充说明:如果后续需要导入 .json 格式文件,ES 模块规范下需要添加导入断言:import xxx from './xxx.json' assert {type: 'json'}
  • 方案3:混合使用两种规范(非必要不推荐)
    如果确实需要在 ES 模块环境中使用 require 加载依赖,可以手动创建 require 方法:
    import { createRequire } from 'module';
    const require = createRequire(import.meta.url);
    // 后续即可正常使用 require 语法加载各类依赖
    

内容的提问来源于stack exchange,提问作者Pavel Sarygin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:42:02