如何在VSCode中解决Node环境中使用import和require混合报错

酷辰姑娘_3527

酷辰姑娘_3527

2026-07-06

350人浏览

原创

err_require_esm是node.js加载器硬性禁止commonjs的require()加载esm文件(如.mjs或type:"module"下的.js)所致。解决方法包括:在commonjs中用await import()动态加载,或用createrequire构造专用加载器;避免一刀切设"type":"module",应通过后缀(.mjs/.cjs)明确区分模块类型。

如何在vscode中解决node环境中使用import和require混合报错

ERR_REQUIRE_ESM:require() 加载 .mjs 或 ESM 包时直接崩溃

这是 Node.js 模块加载器的硬性限制,不是语法错误。只要你在 CommonJS 文件(比如 index.js)里写了 require('./utils.mjs'),Node 就会在解析阶段立刻抛出 Error [ERR_REQUIRE_ESM]。

常见触发点:

  • 第三方包升级到 ESM 默认发布(如 execa@8+、glob@10+),但你的入口仍是 require()
  • 自己写了 .mjs 工具脚本,被旧代码 require() 直接引入
  • VSCode 的 Code Runner 插件默认用 node xxx.js 执行,不区分模块类型

别改后缀或一刀切加 "type": "module"——那会让所有 .js 变成 ESM,导致原有 require('./config.js') 全部失效。

可行解法:

  • 在 CommonJS 文件中改用动态 import():const mod = await import('./utils.mjs');(注意返回的是 Promise,需 async 函数或顶层 await)
  • 若必须同步加载(如 CLI 参数解析),用 createRequire 构造专用加载器:
    import { createRequire } from 'module';<br>const require = createRequire(import.meta.url);<br>const config = require('./config.cjs');
    注意:createRequire 创建的 require 仍不能加载 .mjs,只用于加载 .cjs 或未设 type: "module" 的 .js

SyntaxError: Cannot use import statement outside a module

这是典型的执行环境错配:你写了 import,但 Node 把文件当 CommonJS 解析了。根本原因不是 Node 版本低,而是没声明模块类型或执行方式不对。

两种互斥路径:

  • 加 "type": "module" 到 package.json:所有 .js 按 ESM 处理,但所有 require() 必须重写为 import,且不能再用 __dirname、__filename
  • 不加 type,改后缀:把 ESM 文件存为 .mjs,CommonJS 文件保持 .js 或改用 .cjs(.cjs 总是被识别为 CommonJS,不受 package.json 影响)

VSCode 的 Code Runner 插件默认按后缀判断运行方式,.mjs 会自动用 node --experimental-modules(旧版)或直接 node(v14+),但 .js 一定走 CommonJS。所以混用时,文件后缀必须明确区分。

Rydberg Agent Node
Rydberg Agent Node

使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r

下载

require is not defined 错误出现在 VSCode 终端里?

这个报错只该出现在浏览器控制台。如果它真出现在 VSCode 内置终端,说明你没用 node 执行,而是误用了其他命令(比如直接 node -e "require('./x.js')" 但当前目录没装 Node,或用了错误 shell)。

先验证基础环境:

  • 终端里运行 which node 和 node -v,确认 Node 可用且版本 ≥ v14.18(ESM 基础支持)
  • 检查 package.json 是否有 "type": "module";如果有,require() 就真的不能用,不是插件问题
  • Code Runner 插件默认配置可能把 .js 当浏览器脚本跑(尤其 Windows 上),需进插件设置搜 code-runner.executorMap,把 javascript 对应值改成 "node"

更稳妥的做法:统一在终端里手动执行 node index.js,而不是依赖右键“Run Code”。

调试时 F5 报错 Cannot find module 'bootloader.bundle.js'

这几乎 100% 是 Node 安装路径含中文或空格导致的。VSCode 的 js-debug 调试器对路径编码极敏感,哪怕只是 C:Program Files odejs 这种带空格路径,也可能让 require() 在内部解析失败。

检查步骤:

  • 运行 which node(macOS/Linux)或 where node(Windows),看输出路径是否含中文、空格、emoji
  • 如果是官网 pkg 安装,默认路径 /usr/local/bin/node(macOS)或 C: odejs(Windows)是安全的;手动解压的版本务必移到纯英文路径
  • 打开 .vscode/launch.json,删掉 runtimeExecutable 字段(让调试器从 PATH 查找),或填绝对路径如 "C:\nodejs\node.exe"

注意:launch.json 里的路径要用双反斜杠 \ 或正斜杠 /,不能用单反斜杠。

混用 import 和 require 最容易被忽略的点:模块边界必须物理隔离。不是靠注释或命名约定,而是靠文件后缀(.cjs/.mjs)和 package.json 的 type 字段共同锁定行为。一旦跨边界调用,就得用 import() 或 createRequire 显式桥接,没有中间态。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

2023.11.27

1955

6

vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

2023.06.30

1375

18

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.21

2892

3

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1969

12

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1727

8

vscode可以写什么语言
vscode可以写什么语言

vscode是一款强大的代码编辑器,支持多种编程语言的开发。通过安装扩展,可以为 JavaScript/TypeScript、Python、Java、C#、PHP、Go、Ruby、Rust、HTML/CSS 等语言提供智能代码补全、调试和格式化等功能。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

2607

12

vscode中文设置方法
vscode中文设置方法

方法一:在设置页面中,搜索“locale”,并选择“zh-cn”。方法二:按“Ctrl Shift P”快捷键,输入“Configure Display Language”,将语言修改为“zh-cn”。如果上述方法无效,可考虑安装中文插件。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1838

14

vscode用途介绍
vscode用途介绍

Visual Studio Code(VSCode)是一款由 Microsoft 开发的多功能文本编辑器,适用于各种编程语言。作为一款开源软件,VSCode 拥有代码高亮、自动补全、调试、Git 集成等强大功能,成为程序员不可或缺的工具。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1262

10

vscode和visualstudio的区别
vscode和visualstudio的区别

Visual Studio是一款功能强大的集成开发环境(IDE),适用于专业开发人员进行复杂项目的构建。而VSCode则是一款轻量级的代码编辑器,更适合各种规模的项目开发。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1116

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程