如何在VSCode中创建与运行Node.js应用?【教程】

10次阅读

vscode不运行node.js,执行依赖本地安装的node命令;需先在系统终端验证node –version和npm –version有输出,若报错则重装node.js并勾选“Add to PATH”;VSCode内置终端默认复用系统PATH,配置变更后可能需重启。

如何在VSCode中创建与运行Node.js应用?【教程】

VSCode 本身不运行 Node.js,它只是编辑器;真正执行靠的是你本地已安装的 node 命令。只要终端能跑 node --version,VSCode 就能调用它——关键不在 VSCode 设置,而在环境是否就绪。

确认 Node.js 已正确安装并可用

这是最常被跳过的一步,也是后续所有失败的根源。很多人以为装了 VSCode 就等于能写 Node.js,其实 VSCode 和 Node.js 完全无关。

  • 打开系统终端(macOS/linux 用 Terminal,windows 用 PowerShell 或 CMD),输入 node --versionnpm --version,必须有输出(如 v20.11.1
  • 如果报错 command not found'node' is not recognized,说明 Node.js 没装,或没加进系统 PATH —— 此时重装 Node.js(推荐从 nodejs.org 下载 LTS 版),勾选 “Add to PATH” 选项
  • VSCode 内置终端(Ctrl+`)默认复用系统 shell 环境,但如果你改过 shell 配置(比如用了 zsh + nvm),可能需要重启 VSCode 才能加载新 PATH

在 VSCode 中新建并运行一个最简 Node.js 文件

不需要插件、不需要配置文件,纯手工创建也能立即运行。

  • 新建文件夹,用 VSCode 打开(File → Open Folder
  • 右键 → New File,命名为 index.js
  • 写入以下内容:
console.log('Hello from Node.js in VSCode');
  • 保存文件(Ctrl+S),然后在 VSCode 内置终端中执行:node index.js
  • 看到输出即表示成功。别急着配调试器或任务,先确保这一步通了

用 VSCode 的 Run Code 扩展快速执行(可选但实用)

如果你习惯按快捷键一键运行,Run Code(by Jun Han)扩展比原生调试更轻量,适合脚本类开发。

  • 在 VSCode 扩展市场搜 Code Runner,安装后重启(或重载窗口)
  • 打开 index.js,右上角会出现 ▶️ 按钮,或按 Ctrl+Alt+N(Windows/Linux) / Cmd+Option+NmacOS)
  • 注意:它默认用 node 运行 .js 文件,但不会自动读取 package.jsonscripts,也不支持断点调试
  • 如果执行报错 Cannot find module,大概率是当前工作目录不对 —— 右键文件 → Run Code in Current Folder,或手动 cd 到项目根目录再运行

调试 Node.js 应用时常见陷阱

VSCode 调试功能强大,但默认配置容易踩坑,尤其对新手。

  • 点击左侧调试图标(或 Ctrl+Shift+D),再点顶部的「运行和调试」→「创建 launch.json 文件」→ 选 Node.js → 选 node.js (preview)(新版推荐)
  • 生成的 .vscode/launch.json 默认配置里 "program" 指向 "${file}",意味着它只调试当前打开的文件 —— 如果你的入口是 src/index.js,但当前打开的是 test.js,就会调试错文件
  • 想固定调试入口,把 "program" 改成:"${workspaceFolder}/index.js"
  • 调试时若卡在 Waiting for the debugger to disconnect...,通常是 Node.js 版本太高(v20+)与旧版调试协议不兼容,可尝试在 launch.json 中加一行:"runtimeExecutable": "node", "runtimeArgs": ["--inspect-brk"]

真正卡住人的往往不是“怎么配”,而是“为什么终端能跑,VSCode 终端却报 command not found”——问题几乎全出在 PATH 加载时机或 shell 初始化逻辑上。先让 node 在系统终端和 VSCode 终端里行为一致,剩下的都是水到渠成的事。

text=ZqhQzanResources