require仅在node.js或支持commonjs的打包工具中有效,浏览器原生不支持;它用于导入内置模块、第三方包或本地文件,返回module.exports值;esm项目中需用createrequire创建require函数。

JavaScript 中通过 require 导入 CommonJS 模块数据,仅在 Node.js 环境(或支持 CommonJS 的打包工具如 Webpack 配置为 CommonJS 模式)中有效,浏览器原生 JavaScript 不支持 require。
确保运行环境支持 CommonJS
CommonJS 是 Node.js 默认的模块系统。require() 是 Node.js 提供的全局函数,不能在浏览器的 script 标签或 ES 模块(type="module")中直接使用。若你在前端项目中看到 require,通常是经过 Webpack、Rollup 等工具转换或模拟实现的。
- Node.js 脚本(
.js文件,默认为 CommonJS)可直接用require - ESM 模式下(如
package.json中设置了"type": "module"),默认禁用require;需改用import,或通过createRequire显式启用 - 浏览器端不识别
require,强行使用会报ReferenceError: require is not defined
基本导入语法与常见写法
require 接收一个模块标识符(字符串),返回该模块导出的对象(module.exports 的值)。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 导入内置模块:
const fs = require('fs'); - 导入第三方包:
const lodash = require('lodash');(前提是已安装npm install lodash) - 导入本地文件:
const utils = require('./utils.js');(扩展名.js可省略) - 导入 JSON 文件(Node.js 14.13+ 支持):
const config = require('./config.json');
处理不同类型的 module.exports 输出
被 require 的模块如何导出,决定了你拿到的数据结构:
- 导出单个函数:
module.exports = function() { return 'hello'; };→const fn = require('./say.js');,fn()可直接调用 - 导出对象:
module.exports = { a: 1, b: 2 };→const obj = require('./data.js');,访问obj.a - 导出类:
module.exports = class MyClass { ... };→const MyClass = require('./MyClass.js');,再new MyClass() - 注意:
exports.xxx = ...是module.exports的快捷写法,但若重新赋值module.exports = ...,则exports不再生效
在 ESM 项目中临时使用 require
如果你的项目是 ESM("type": "module"),但仍需加载 CommonJS 模块(比如某些老库不提供 ESM 版本),可以用 Node.js 内置的 createRequire:
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
const lodash = require('lodash'); // ✅ 正常工作
const local = require('./config.js');
这是官方推荐方式,避免混用 import 和 require 引发的解析冲突。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










