“require is not defined”是浏览器环境报错,因require仅Node.js支持;需确认执行环境为Node(如VSCode终端运行node script.js),检查PATH、launch.json路径、package.json的"type":"module"设置及Code Runner配置。

require is not defined 是浏览器环境,不是 VSCode 或 Node.js 的问题
这个错误只会在浏览器控制台里出现,说明你误把本该用 node 执行的脚本拖进了 HTML 页面,或直接在 DevTools 里粘贴运行了含 require 的代码。VSCode 本身不执行 JS,它只是编辑器;真正决定能否用 require 的,是运行时环境。
确认你当前的执行方式:
- 在 VSCode 终端里输入
node script.js→ 应该成功(前提是已装 Node.js 且在 PATH 中) - 右键文件选 “Run Code”(Code Runner 插件默认行为)→ 可能失败,因为它会按文件后缀和插件配置猜测运行方式,JS 文件常被当成浏览器环境执行
- 直接打开 HTML 文件,然后在浏览器控制台粘贴含
require的代码 → 必然报require is not defined
VSCode 终端里 node 命令找不到:PATH 没继承或 shell 不匹配
VSCode 内置终端启动时,不一定加载你系统中配置好的 shell 环境变量。比如你在 macOS 的 ~/.zshrc 里加了 Node 路径,但 VSCode 默认启用了 bash,那 node 就不可见。
验证和修复步骤:
- 终端右上角点击「+」旁的小箭头,手动切换 profile 到你日常用的 shell(如
zsh或Command Prompt) - 新开终端后,运行
echo $PATH(macOS/Linux)或echo %PATH%(Windows),检查输出是否包含 Node 安装路径(如/usr/local/bin或C: odejs) - 如果没出现,别改 VSCode 设置,去系统级环境变量里补全 —— Windows 在「系统属性 → 高级 → 环境变量」里改 Path;macOS/Linux 编辑对应 shell 的配置文件(
.zshrc或.bash_profile)并执行source ~/.zshrc - 改完必须关掉所有 VSCode 终端 tab,再开新的,否则旧进程不会重读环境变量
launch.json 里 runtimeExecutable 写错路径或用了中文路径
F5 调试时报错类似 Cannot find module '...bootloader.bundle.js',大概率是 Node 安装目录含中文字符(如 D:软件
odejs),导致 VSCode 调试器内部路径解析失败。
这不是权限或配置问题,是硬性限制:
- Node.js 安装路径必须纯英文、无空格、无中文(推荐
C: odejs或/usr/local/bin/node) - 检查
.vscode/launch.json中的runtimeExecutable字段:如果写的是相对路径或错误路径,调试会直接失败;建议留空(靠 PATH 查找)或填绝对路径(如"runtimeExecutable": "C:\nodejs\node.exe") - 如果项目根目录下有
package.json且"type": "module",那require本身就不合法 —— 此时应改用import,或把文件后缀改成.cjs
Code Runner 插件默认用浏览器环境跑 JS,require 必然失败
Code Runner 的 JS 默认执行命令是 node,但某些版本或配置下会退化为调用浏览器(尤其当文件里有 document 或 alert 时)。一旦走错通道,require 就变成未定义。
安全做法:
- 右键 JS 文件 → 选择「Run Current File in Node.js」,这个选项强制走
node运行时 - 或者,在设置里搜
code-runner.executorMap,找到javascript对应项,确保值是"node $fullFileName",而不是open或browser类命令 - 更彻底的方案:卸载 Code Runner,改用 VSCode 原生调试(F5)+ 正确的
launch.json,避免插件逻辑干扰
真正容易被忽略的点是:错误可能同时来自多个层面——环境变量没生效、插件覆盖了运行逻辑、package.json 里声明了 "type": "module" 却还在用 require。得一层层排除,不能只盯着一个地方改。


















