Code Runner 默认用浏览器环境执行 JS,不支持 Node.js 交互特性与 ES 模块;需修改 executorMap 为 node 命令,并启用 runInTerminal 以支持输入输出和中文显示。

Code Runner 确实能快速运行 JS 文件,但它默认不支持 node 的交互式特性(比如 prompt()、readline),也不自动加载 ES 模块或处理 import 语法 —— 这是多数人卡住的第一步。
为什么按 Ctrl+Alt+N 没反应或报错“ReferenceError: require is not defined”
Code Runner 默认用浏览器环境(html-preview)或简陋的沙箱执行 JS,不是 node。遇到 require、fs、__dirname 就直接崩。
- 打开 VS Code 设置(
Ctrl+,),搜code-runner.executorMap - 找到
javascript对应的命令,改成:"node -r esbuild-register $fileName"
(如需 ES 模块支持)或更稳妥的"node --experimental-specifier-resolution=node $fileName"
- 如果只是普通 CommonJS 脚本,用
"node $fileName"
即可 - 确保系统已安装
node,且终端中运行node -v可见版本
如何让 console.log() 输出中文不乱码(Windows 用户必看)
Windows 终端默认编码是 GBK,而 Node.js 输出 UTF-8,Code Runner 直接调用终端时容易显示为 ???。
- 在 VS Code 设置里搜
code-runner.runInTerminal,勾选它(强制走集成终端,而非输出面板) - 然后在终端中手动执行:
chcp 65001
(临时切 UTF-8) - 一劳永逸:修改 VS Code 终端默认配置,在
settings.json加"terminal.integrated.profiles.windows": { "PowerShell": { "source": "PowerShell", "args": ["-NoExit", "-Command", "chcp 65001 > $null"] } }
测试单个函数或代码片段,不想建文件怎么办
Code Runner 本质是运行整个文件,但你可以用「代码段 + 临时执行」绕过:
- 写一段测试代码,比如
function add(a, b) { return a + b; } console.log(add(2, 3)); // → 5 - 选中这段(不要选空行),右键 →
Run Code(或Ctrl+Alt+N) - 注意:只对选中的代码生效,且不能含
import或顶层await(Node 不支持) - 若要测异步,改用
(async () => { const res = await fetch('/api'); console.log(res); })();
和 Jest / Vitest 冲突?别混用
Code Runner 是即时执行工具,不是测试框架。它跑不了 describe、test、expect —— 那些必须交给 npm test 或专用扩展(如 Jest Runner)。
立即学习“Java免费学习笔记(深入)”;
- 看到
Error: Cannot find module 'jest'?说明你误把测试文件交给 Code Runner 执行了 - 解决方法:在
settings.json中排除测试文件"code-runner.excludedFiles": ["**/*.test.js", "**/*.spec.js"]
- 真要调试测试用例,直接终端运行:
npx vitest run --run my.test.js
code-runner.runInTerminal 这个开关 —— 关着时所有输入/输出都进输出面板,既不能 readline,也看不到真实错误堆栈,问题就卡在黑盒里。










